a=2,!a 中有三个运算符号
1、 = 赋值运算符,如:a=5 表示将5存储到a中
2、 , 逗号运算符,逗号前后为表达式,顺序运算返回最后一个表达式的结果,如:
while( scanf("%d", &a), a>0 ) //读一个数,且a>0时循环,并不在乎scanf()函数的运算结果 scanf("%d", &a), a>0 中,操作两个表达式,但只返回a>0的运算结果
{
....
}
3、! 非运算 符,其返回值只有两个,1或0。 C中规定, 非0为1,非(非0)为0,如: !5 == 0 , !0 == 1 , !1 == 0
结合以上,a=2,!a 的运算过程为:
a=2
!a ==0
返回0
a=2,!a的值
这个问题,主要考了两个知识点
1)表达式求值顺序
2)逗号运算符的返回值
第一步 a=2 这个就是把2赋值给a
第二步 !a 这里是not运算符,因为a==2,所以!a就是0
第三步,逗号运算符的最后一个结果就是整个逗号表达式的值
因此整个表达式的值是0
因为a=2>0, 非0的数真,0为假
!是逻辑非运算符,使原来的表达式真假对调,所以!a=0
!a值为0,!的作用是取逻辑反,除0外所有数为逻辑真,0为逻辑假
楼上正解!