C的基本运算问题

来源:百度知道 编辑:UC知道 时间:2024/05/22 18:30:45
1. 设x为整型变量,和表达式“!(!x)”值完全相同的表达式是

a.x==0 b.x==1 c.x!=0 d.x!=1

(总觉得这道题有问题啊~~~郁闷)

2. 设整型变量x,y,z均为5:

a.执行“x%=y+z” x=? x=5%10.......(10%5我会...这个怎么算?)

b.执行“x=(y>z)?x+2:x-2,3,2” (x-2,3,2是逗号表达式....最后答案应该是2....怎么是3呢?)

1.
x为整形变量
!(!x)结果变成逻辑了(1或0),所以等效于表达式 x!=0

2.a
5%10等于5 ,即 5除以10的余数是5(商是0)。

2.b
括号先来,y>z是错的,为逻辑0 ,x!=0,所以选冒号右边,x=(y>z)?x+2:x-2,3,2;(注,原文少了分号)

这条语句是会出现警告的,等效于
x=(y>z)?x+2:x-2;
3;
2;

1.这题目有问题,如果x为0,则!(!x)为0,如果不为0,则!(!x)为1
2.
x%=y+z后x=5
x=(y>z)?x+2:x-2,3,2后x=3

逗号表达式,又称为“顺序求值运算符”。逗号表达式的一般形式为

表达式1,表达式2

逗号表达式的求解过程是:先求解表达式1,再求解表达式2。整个逗号表达式的值是表达式2的值。例如,上面的逗号表达式“3+5,6+8”的值为14。又如,逗号表达式
a=3*5,a*4
对此表达式的求解,读者可能会有两种不同的理解:一种认为“3*5,a*4” 是一个逗号表达式,先求出此逗号表达式的值, 如果a的原值为3,则逗号表达式的值为12,将12赋给a, 因此最后a的值为12。另一种认为:“a=3*5”是一个赋值表达式”,“a*4”是另一个表达式,二者用逗号相连,构成一个逗号表达式。这两者哪一个对呢?赋值运算符的优先级别高于逗号运算符, 因此应先求解a=3*5(也就是把“a=3*5”作为一个表达式)。经计算和赋值后得到a的值为15,然后求解a*4,得60。整个逗号表达式的值为60。
一个逗号表达式又可以与另一个表达式组成一个新的逗号表达式,如(a=3*5,a*4),a+5 先计算出a的值等于15,再进行a*4的运算得60(但a值未变,仍为15),再进行a+5得20,即整个表达式的值为20。
逗号表达式的一般形式可以扩展为

表达式1,表达式2,表达式3……表达式n

它的值为表达式n的值。