输出格式对应数据类型符号的含义
%dint输出一个有符号的10进制 int 类型
%ounsigned int输出8进制的 int 类型
%xunsigned int输出10进制的 int 类型,字母以小写输出
%Xunsigned int输出10进制的 int 类型,字母以大写输出
%uunsigned int输出一个 10 进制的无符号整型

注:%x 用小写字母a ~ f来表示,%X用大写字母A ~ F来表示。无符号整型的最小值是0;

#include <stdio.h> 

int main(){
	int a = 12345;    // 赋值十进制的变量 
	int b = 0014;   // 赋值 8进制的变量 
	int c = 0x4d2;  // 赋值16进制的变量 
	int d = 0;
	int e = -1;     // 赋值为-1转换为 无符号整型输出  
	
	printf("a = %d\n", a);
	printf("8进制: b = %o\n", b);
	printf("10进制:b = %d\n", b);
	printf("16进制:b = %x\n", c);
	printf("16进制:b = %X\n", c);
	printf("10进制:b = %d\n", c);
	
	printf("无符号整型 d 的 10进制: %u\n", d);	
	printf("无符号整型 e 的 10进制: %u\n", e);	  // 无符号整型的最小值是0;
	
	return 0; 
}

运行结果:
在这里插入图片描述

shortintlonglong long

数据类型占用空间
short(短整型)2字节
int(整型)4字节
long(长整型)Windows 为 4字节,Linuwx为4字节(32为), 8字节(64位)
long long (长长整型)8字节

注:

  • short是短整型,一般short是int的一半大小,short在32位的windows下是2个字节。
  • 需要注意的是,整型数据在内存中占的字节数与所选择的操作系统有关。虽然C语言标准中没有明确规定整型数据的长度,但 long 类型整数的长度不能短于 int 类型,short 类型整数的长度不能短于 int 类型。
  • 当一个小的数据类型赋值给一个大的数据类型,不会出错,因为编译器会自动转换。但当一个大的类型赋值给一个小的数据类型,那么就可能丢失高位。
整型常量所需类型
10代表 int 类型
10l, 10L代表 long 类型
10ll, 10LL代表 long long 类型
10u, 10U代表 unsigned int 类型
10ul,10IL代表 unsigned long 类型
10ull, 10ULL代表 unsigned long long 类型
输出格式对应数据类型符号的含义
%hdshort输出 short 类型
%dint输出 int 类型
%llong输出 long 类型
%lllong long输出 long long 类型
%huunsigned short输出 unsigned short 类型
%uunsigned int输出 unsigned int 类型
%luunsigned long输出 unsigned long 类型
%lluunsigned long long输出 unsigned long long 类型

总结

整型后缀:

  • u 和 U 表示该整型常量为无符号类型。
  • l 和 L 表示该整型常量为long 型。

整型常量的数据类型由以下三个因素决定。

  • 该整型常量的值
  • 该整型常量的后缀
  • 所在编译器中各数据类型的表示范围
无后缀的十进制常量int → long → unsigned long
无后缀的八进制或十六进制常量int → unsigned → long → unsigned long
带后缀 u / Uunsigned → unsigned long
带后缀 l / Llong → unsigned long
带后缀 l / L 和 u / Uunsigned long
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐