c - 为什么 int 类型变量的值即使不在 int 范围内也会被打印?

标签 c int range

#include<stdio.h>
int main()
{
int a;
a=100000000;
printf("%d",a);
return(0);
}

//为什么a的值即使大于int的范围也会被打印?

最佳答案

because range of int type in c is from -32767 to 32767

你的假设是错误的。

类型范围int 固定。 int 不一定是 16 位。

C 标准没有为 int 定义固定范围。 。它要求一致的实现至少支持 int 的 -32767 到 32767 范围。 。但实现可以支持更高的范围。在大多数系统上,int是32位宽。

所以你的输出没有什么意外的。 如果您想知道确切的限制,那么您可以使用宏 INT_MININT_MAX来自<limits.h> .

相关 C-FAQ:How should I decide which integer type to use?

关于c - 为什么 int 类型变量的值即使不在 int 范围内也会被打印?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35085566/

相关文章:

c - 从 PROGMEM 中查找 C 中十六进制字符数组的大小

c - 线程中的全局数组

c# - 通过在 C# 中使用按位运算符而不是普通的 int 求和来显着提高性能吗?

c++11 - 如何在 char* argv[] 上执行基于范围的 c++11 for 循环?

c++ - 如何理解函数参数中的星号(*)?

javascript - 将此数据集中的值从字符串转换为 int 的最佳方法是什么

java - 什么是相当于 null 的 double/int 值?

javascript - range.toString() 的奇怪行为

excel - 从动态日期范围中排除周末

c - int main 无缘无故循环? (PIC编程,XC16,MPLAB)dsPIC33EP