c - 在 C 中显示没有 unsigned char 的 ASCII 字符

标签 c visual-studio-2013 infinite-loop

unsigned char a;

for(a=32;a<128;a=a+1)
printf("%d='%c'\t",a,a);
return(0);

为什么我要放unsigned char?当我将它保留为 char 时,我执行了该程序,它给了我一个无限循环。 a=127时不应该停止吗?

最佳答案

char 表示它是 signed 还是 unsigned 取决于实现。这使得您的代码的行为实现定义
它似乎在您的机器上已签名。根据 C 标准,signed char 的最小值和最大值分别为 -127+127。任何大于 127 或小于 -127 的值都不能分配给 a 否则它会调用未定义的行为

a达到127后,自增1,变为128,a无法容纳signed char 变量,因此代码调用未定义的行为。

关于c - 在 C 中显示没有 unsigned char 的 ASCII 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30819716/

相关文章:

c - volatile value-only 语句会触发 C 中的读访问吗?

c - C : Reasoning for the compilation error while using linker file variables

c - 在C shmget中查找共享内存的大小

vb.net - 更改 MetroFramework MetroMessageBox 颜色

c - 如何终止 Turbo C 中的无限循环?

c - 如何跨多个文件访问和修改全局变量?

c++ - 具有成员函数的 VS2013 std::function

visual-studio-2013 - 适用于 Visual Studio 2013 的 Visual C++ 可再发行组件包的 Inno 安装程序

javascript - 使用此 javascript 获取无限调用堆栈

angularjs - Angular 路线无限循环