c - 这段C代码有什么问题吗?

标签 c ubuntu gcc

我的源代码:

#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/

相关文章:

c - 如何使用 libxml2 库在 c 中解析 XML 字符串而不是 XML 文档

c - 无法理解此 C 函数的作用

c - 安装适用于 C/C++ 的 openSSL MacOs X gcc-9 时遇到问题

ruby-on-rails - Rails 和 Docker : configure bundler to run bundle install in a docker build for Rails. 4.2.6?

ubuntu - 在 ubuntu 中为 001,002 更改文件名

c - 在结构中使用 gettext 时初始值设定项无效

c++ - Visual Studio 代码语法高亮显示错误但编译

c - gcc scanf 警告认为 float 是 double

c++ - GCC 和包含文件问题

c - 在 Mac OS X 上组装和链接 gcc 生成的程序集