c++错题
已有變量定義和函數調用語句,
1
2
int a=25;
print_value(&a);
則下面函數的正確輸出結果是__。
1
2
3
4
void print_value(int* x)
{
printf(“%x\n”,++*x);
}
答案:
1a
原因:
1考察運算符的優先級,* 的優先級要比++高,*x = 25;之后由于是先++ 再輸出,所以應該輸出十進制的26。
2考察printf的輸出格式問題,好多時候習慣性輸出十進制,但是這道題中很明顯是“%x”,即十六進制,所以是 【1a】。
假如題目中變為 printf(“%x\n”,*x++); 應該輸出 【19】,也就是十進制【25】
總結