求助c语言中if后面括号里的简写形式

#include <stdio.h>
void main()
{
int a,b,s;
scanf("%d%d",&a,&b);
s=a;
if(s=b) s*=s;
printf("%d",s);
}
请问下if(s=b) s*=s;这句是怎么运行的,真心看不懂

啊?你确定你的if没有错?if(s=b)是判断是否成功的将b赋值给s了,如果是判断s和b是否相等,应该是if(s==b)

改成我的那个形式后,它的执行是这样的:判断s和b是否相等,如果相等,则使s等于原值的平方。
s*=s的执行过程是这样的,cpu从内存中读取s的值到寄存器1中,再读取一次s的值到寄存器2,cpu将两个寄存器中的值相乘后赋值返回给内存中的S。如s*=a,则其过程为:
cpu从内存中读取s的值到寄存器1中,再读取a的值到寄存器2,cpu将两个寄存器中的值相乘后赋值返回给内存中的S
但愿能帮到你
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-09-14
if(s==b) s*=s; // 相等的比较用 == ,两个等号
如果 s 等于 b,则计算 s = s * s
s*=s 就是 新s = 老s * 老s;
程序 输入 a, b
如果 a 等于 b,则 输出 a*a,
如果 a 不等于 b,则 输出 a。本回答被提问者和网友采纳
第2个回答  2012-09-14
按照您这种写法if(s=b)的解释应该是:如果b赋值于s;会不会是您写错了呢?在C语言中,=是赋值表达式,==才是等于符号喔。如果是写为if(s == b)则可以理解为//如果s等于b ;s*=s等价于s=s*s;
第3个回答  2012-09-14
s*=s,意思是如果s = b,s等于原来的s(即a) 乘以b,即a*b
第4个回答  2012-09-14
如果s=b的话则执行s*=s
相似回答