整形的隐式数据类型转换、强制类型转换和整数常量

#include<stdio.h>
int main(){
//1.定义整型变量---带符号整形----signed+整型关键字+int+变量名(其中signed 和 int可以省略)
short a =1; //与short int a =1;signed short int a =1 和 signed short a = 1一样
int b =2;
long c = 3;
//long long d = 4; c99新增内容 visual c++6.0编译可能会报错
//2.定义整型变量---无符号整型---unsigned+整型关键字+int+变量名( int 可以省略)
unsigned short e = 5; //与unsigned short int e =5一样
unsigned int f = 6;
unsigned long g = 7;
//3.求一个数据类型或数值所占的字节---使用sizeof运算符(习惯对它的操作数加括号)
printf("%d %d %d\n",sizeof(short),sizeof(int),sizeof(5));
//4.整型数据输出十进制数,使用格式声明
printf("%hd %d %ld\n",a,b,c);
printf("%hu %u %lu\n",e,f,g);
//5.整型数据输出十进制或者十六进制
printf("%o %x %X %#x %#X\n",123,123,123,123,123); //输出173,7b,7B,0x7b,OX7B
//6.scanf函数中不可以使用带“#”的格式字符
scanf("%#X",&b); //随便输入一个16进制数,scanf函数会因为错误而终止。所以并未把任何值赋给b 所以b的值输出还是2
printf("%d\n",b);
//7.隐式数据类型转换---长 赋 短,截断
unsigned short us= -1; //长的整型数据赋给短的整型数据时,只会将低几位赋给“短的” 整型数据
printf("%hu %hd\n",us,us); //输出65535,-1
//8.隐式数据类型 转换---无符号短 赋 长 ,先把短的全部内容复制到长的低几位,长的高几位填0
unsigned int ui = us;
printf("%u\n",ui) ;//输出65535
//9.隐式数据类型转换---带符号短赋长,先把短的全部内容复制到长的低几位,如果短的是自然数,长的高几位填0,否则长的高几位填0
short ss=-1;
ui=ss;
printf("%u\n",ui); //输出4294967295

ss=-1;
ui=ss;
printf("%u\n",ui); //输出1
//10.隐式数据类型转换--等长,则保留原有补码
ui=-1;
printf("%u\n",ui); //输出4294967295

//11.整型常量--显式数据类型转换
printf("%u %ld %lu",1U,1L,1UL); //1U--unsigned int 类型 1L--long类型 1UL--unsigned long类型
//12.整型数据的强制数据类型转换--(数据类型)该处的圆括号为强制数据类型转换符,是一个单目运算符
printf("%hu %d\n",(unsigned short)-1,(int)ui);
return 0;

上一篇:day02-变量与运算符


下一篇:数据随机丢失情况下多传感器多速率鲁棒融合估计