AK_*_*AK_ 6 c undefined-behavior
有人告诉我这段代码打印出29.为什么会这样?
int *a = 17;
printf("%d", a+3);
Run Code Online (Sandbox Code Playgroud)
Aar*_*ron 36
因为当您添加到指针时,它会添加对象大小.在这种情况下,对象大小为4(sizeof(int)== 4) - 所以17 + 3*4 == 29.
Ric*_*ton 13
每个人都知道答案是23,至少在6809.
a+3 == a + (3 * sizeof(int)) == a + 6 == 17 + 6 == 23
Run Code Online (Sandbox Code Playgroud)
JSB*_*ոգչ 11
a+3 == a + (3 * sizeof(int)) == a + 12 == 17 + 12 == 29
Run Code Online (Sandbox Code Playgroud)