76.设有定义“int x=8,y,z;”,则执行“y=z=x++,x=y==z;”后,变量x值是(B)
A.0
B.1
C.8
D.9
【解析】这是逗号表达式组成的语句,要先计算“y=z=x++”,结果变量y和z的值均为8。注意++是后缀运算符,同时x等于9。再计算“x=y==z”,由于“==”优先于“=”,所以x的值等于“y==z”,而y和z值相等,所以运算结果为1,即x值为1。本题答案应选B。
77.设有“int a=1,b=1;”,“printf("%d,%d",(a++,--b),b-1);”的输出是(D)
A.1,-1
B.1,0
C.0,-1
D.0,0
【解析】printf()函数的功能是自右向左依次计算表达式的值,然后再按照自左向右的顺序输出各个表达式的值,所以题目中输出语句执行时,是依次计算下列两个表达式的值:
b-1 结果为0,注意变量b值不变;
(a++,--b)这是逗号表达式,先计算a++,结果变量a值为2;
再计算--b,结果变量b值为0;
整个逗号表达式的值就是--b的值,为0。
按照自左向右的顺序输出(a++,--b)和b-1的值,依次为0,0。本题答案应选D。
78.设有定义语句“char s[]="123";”,则表达式“s[3]”的值是 ( C)
A.’1’
B.’3’
C.0
D.语法出错
【解析】字符数组s在定义时省略了数组长度,表示给每个数组元素均赋了初值。对本题来说,数组的长度为4;数组元素的值依次为:S[0]为'1'。S[1」为'2'。S[2]为'3'、S[3]为字符率结束标记符'\0',所以“s[3]”的值是'\0'。注意,这个字符的 ASCII代码值是整数 0,所以本题答案应选C。