若有定義語句“(int a =25,b=14,c=19)”則下列語句的執行結果是(?
結果為:
"###a=26,b=13,c=%19"
三個值起始為:a==25,b==14,c==19;
if (a++ <= 25 && b-- <= 2 && c++) ,首先判斷a<=25,成立,然后a++==26,然后判斷b<=2,不成立(b==14),然后b--==13,由于三個判斷之間為&&運算符,只要有不成立的,即不往下判斷,跳出,執行else語句,此時三個值分別為:a==26;b==13;c==19;
其實這個題出的挺好的!
若有定義語句:int k[2][3], *pk[3]; 則以下語句中正確的是( )
正確答案:B答案 B解析 : *pk[3] 表示的是一個共有 3 個元素的一維指針數組 。
pk[0]=&k=[1] [2] 表示把二維數組中下標為k[1][2]的值賦予 pk[0], 也就是 pk[0] 指向 k[1][2] 這個元素。其他選項錯誤分析:pk[1]是指向int的指針,而k不是int的指針或地址. 所以pk[1]=k;不正確作為數組名的k,它可以視為它的第一個元素的地址,即 &k[0]。
遺憾的是,k[0]并不是int型,所以&k[0](即k)不能被賦給pk[1]. 而k[1][2]是int型,所以pk[0]=&k[1][2]是正確的。 k[0]不是int型,而是3個int構成的一維數組!!! 注意:k的第一個元素是k[0],不是k[0][0]。
若有定義和語句:char s[10]; s="abcd"; printf("%d\n",s);則結果
D
原因是
char s[10];
這里的s是一個數組包含10個char的首地址。
它只可以在初始化的時候用
char s[10]="abcd";
或
char s[]="abcd";
或
char *s="abcd";
上面的寫法都是正確的,但是都是初始化的時候使用,
就是不可以,在后面的賦值語句中使用
s="abcd"; 這個寫法就不正確。