我的源代码:
#include <stdio.h>
int main()
{
char myArray[150];
int n = sizeof(myArray);
for(int i = 0; i < n; i++)
{
myArray[i] = i + 1;
printf("%d\n", myArray[i]);
}
return 0;
}
我使用Ubuntu 14和gcc来编译它,它打印出的是:
1
2
3
...
125
126
127
-128
-127
-126
-125
...
为什么不直接数到 150?
最佳答案
char
的
int
值的范围可以是 0 到 255 或 -127 到 127,具体取决于实现。
因此,在您的情况下,一旦该值达到 127,它就会溢出,并且您会得到负值作为输出。
关于c - 这段C代码有什么问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32007039/