C语言 int 和long int 问题

来源:百度知道 编辑:UC知道 时间:2024/06/19 01:14:02
{#include<stdio.h>
void main ()
int a,b;
scanf("%d",&b);
if(b ==100) a=9;
else a=b/10 ;
switch(a)
{
case 0:printf("a\n"); break;
case 1:printf("b\n"); break;
case 2:printf("c\n"); break;
case 3:printf("d\n"); break;
default:printf("error\n ");
}
}
以上是我的C语言练习题里的一道题
困惑是int a,b; 这句 我不明白的是int 和long int在这里应该没什么区别
但是实际上 当输入比如23时 用int a,b; 就可以正确输出c 而用
long int a,b; 就会输出 error
既然都是整形 长短不同为什么输出的结果有不同。。。。 请高手解答下 谢谢

在C语言中,int即整型类型,long int等同于long,为长整型类型。
二者区别与编译器相关。
1 16位编译器。
int占2字节,范围为-32768~32767
long int占4字节,范围为-2147483648~2147483647
2 32位编译器。
int 和long均占4字节,范围均为-2147483648~2147483647
3 64位编译器。
int 占4字节,范围为-2147483648~2147483647
long因平台实现不同而不同,有4字节,6字节和8字节三种。可以打印sizeof(long)查看。

int 和long int 语法上 有区别

正规写法:
long int -- 32 位有符号整型
short int -- 16 位有符号整型

编译器 允许的 简略写法:
long -- 32 位有符号整型
short -- 16 位有符号整型

如果写成 int, 那么是不确定 写法,长度由编译器自行规定
TC int -- 16 位有符号整型, 即 short int
MS VC++ int -- 32 位有符号整型, 即 long int

输入语句,long int 用 %ld ,short int 用 %d
编译器 也许通融 %d 既可读 long 也可读 short。

这个看环境16位环境int和long int一个16位一个32位,一个要用%d一个要用%ld

而32位环境int和long int %d和%ld是一样的都是32位

vc++6.0 验证通过。。。不管是long int or int 都能通过编译,并得到正确结果