解析大多找自网络。
1.程序段如下:
int k;
while(k!=0) k=k-1;
printf(“%d”, k);
输出结果:0
解析:
k未初始化,所以具体值不确定。因此k值可能为两个情况:小于0,或大于等于0。
当k>=0时,最终输出结果当然是0;
当k<0时,情况如下:
由于int的取值范围为:-32768~32767;
k经过循环不停地减1,直到变为-32768,这时候再减1就溢值了,k会变成32767,最终经过循环变为0。
2.程序段如下:
unsigned short sht = 0;
sht --;
执行后,sht的值是?
答案:65535
解析:
unsigned short是无符号整型,其取值范围:0~65535;
故当unsigned short型变量为0时,减1溢出变成65535。
补充:short类型在各种平台都是16位,即216=65536。
3.表达式x&&1
用在if的条件中时,等价的是:
答案:x