int
来定义整数(int 是 integer 的简写),这在《大话C语言变量和数据类型》中已经进行了详细讲解。
short int a = 10;
short int b, c = 99;
long int m = 102023;
long int n, p = 562131;
short a = 10;
short b, c = 99;
long m = 102023;
long n, p = 562131;
一种数据类型占用的字节数,称为该数据类型的长度。例如,short 占用 2 个字节的内存,那么它的长度就是 2。实际情况也确实如此,C语言并没有严格规定 short、int、long 的长度,只做了宽泛的限制:
2 ≤ short ≤ int ≤ long
这就意味着,short 并不一定真的”短“,long 也并不一定真的”长“,它们有可能和 int 占用相同的字节数。操作系统 | short | int | long |
---|---|---|---|
Win64(64位 Windows) | 2 | 4 | 4 |
类Unix系统(包括 Unix、Linux、Mac OS、BSD、Solaris 等) | 2 | 4 | 8 |
#include <stdio.h> int main() { short a = 10; int b = 100; int short_length = sizeof a; int int_length = sizeof(b); int long_length = sizeof(long); int char_length = sizeof(char); printf("short=%d, int=%d, long=%d, char=%d\n", short_length, int_length, long_length, char_length); return 0; }在 32 位环境以及 Win64 环境下的运行结果为:
short=2, int=4, long=4, char=1
在 64 位 Linux 和 Mac OS 下的运行结果为:short=2, int=4, long=8, char=1
( )
,如果跟的是数据类型,就必须带上( )
。( )
,后面会详细讲解。
%hd
用来输出 short int 类型,hd 是 short decimal 的简写;%d
用来输出 int 类型,d 是 decimal 的简写;%ld
用来输出 long int 类型,ld 是 long decimal 的简写。#include <stdio.h> int main() { short a = 10; int b = 100; long c = 9437; printf("a=%hd, b=%d, c=%ld\n", a, b, c); return 0; }运行结果:
%d
输出所有的整数类型,请看下面的例子:
#include <stdio.h> int main() { short a = 10; int b = 100; long c = 9437; printf("a=%d, b=%d, c=%d\n", a, b, c); return 0; }运行结果仍然是:
%d
输出 short,或者使用%ld
输出 short、int 时,不管值有多大,都不会发生错误,因为格式控制符足够容纳这些值。%hd
输出 int、long,或者使用%d
输出 long 时,如果要输出的值比较小(就像上面的情况),一般也不会发生错误,如果要输出的值比较大,就很有可能发生错误,例如:
#include <stdio.h> int main() { int m = 306587; long n = 28166459852; printf("m=%hd, n=%hd\n", m, n); printf("n=%d\n", n); return 0; }在 64 位 Linux 和 Mac OS 下(long 的长度为 8)的运行结果为:
%hd
容纳不下 m 和 n 的值,%d
也容纳不下 n 的值。
编译器的警告是分等级的,不同程度的风险被划分成了不同的警告等级,而使用%d
输出 short 和 long 类型的风险较低,如果你的编译器设置只对较高风险的操作发出警告,那么此处你就看不到警告信息。
Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有