不知道为什么输出是6?在给定的C程序中,每次都会得到6的输出,所以我不能说它在打印垃圾值
#include<stdio.h>
void main()
{
int const* a=2;
printf("%d\n",++(a));
}
我无法确定为什么这个C程序给我这个答案。
实际上,这很容易调试,以查看此处发生了什么。运行这段代码,然后看一下值:
#include<stdio.h>
int main()
{
int const* a=2;
printf("Size of int %d\n", sizeof(int));
printf("Size of int const* %d\n", sizeof(int const*));
printf("Size of a %d\n", sizeof(a));
printf("Not incremented %d\n", a);
printf("Incremented %d\n",++(a));
return 0;
}
我得到的输出:
Size of int 4
Size of int const* 8
Size of a 8
Not incremented 2
Incremented 6
在64位计算机上。显然,这表明当您执行“ ++(a)”时,会将int的大小加2。当您声明时为什么会是这种情况
int const* a=2;
?
好吧,这是因为您将指针类型的大小加2而不是指针的大小。改成:
long const* a = 2;
要观察差异并看到情况就是如此。
这是C / C ++语言的怪癖。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句