#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;
相关文章
- 10-18ADO.NET(三)--------不允许从数据类型 nvarchar 到 varbinary 的隐式转换
- 10-18整形的隐式数据类型转换、强制类型转换和整数常量
- 10-18js中的数据类型隐式转换的三种情况
- 10-18JavaScript的六种数据类型与隐式转换
- 10-18javascript笔记整理(数据类型强制/隐式转换 )
- 10-18JavaScript学习笔记——数据类型强制转换和隐式转换
- 10-18浅析SQL数据类型的隐式转换与显式转换以及隐式转换可能导致的问题
- 10-18用ECMAScript4 ( ActionScript3) 实现Unity的热更新 -- 操作符重载和隐式类型转换
- 10-18也谈SQL Server 2008 处理隐式数据类型转换在运行计划中的增强 (续)
- 10-18C#中,使用显式类型转换(int)和Math.Round方法,将浮点数转换为整数的区别