此題有兩個要點,1是局部變量與全局變量的作用范圍,2是,函數(shù)f(&&a)返回的是表達式 (a)++的值,而不 a的值。
第四類,把關(guān)系表達式有別于數(shù)學(xué)上的關(guān)系式
題例:有以下程序
main()
{ int a=5,b=4,c=3,d=2;
if(a>b>c)
printf("%d\n",d);
else if((c-1>=d)==1)
printf("%d\n",d+1);
else
printf("%d\n",d+2);
}
執(zhí)行后輸出結(jié)果是 ( )
。ˋ)2 (B)3
(C)4 (D)編譯時有錯,無結(jié)果
這道題的關(guān)鍵在(a>b>c),答案容易判斷為A,5大于4也大于3,就把整個表達式判斷為真值,其實,a>b已為真值,1>c則成了假值,所以答案為B。
第五類,字符串的拷貝,
拷成了同一個字符
題例:若有定義語句:char s[100],d[100]; int j=0, i=0;,且s中已賦字符串,請?zhí)羁找詫崿F(xiàn)字符串拷貝。(注:不得使用逗號表達式)
while([i]){ d[j]= 【 】;j++;}
d[j]=0;
這里容易只看到當(dāng)前,忽略了還有其他字符,錯填為s[i]。答案為s[i++]。