C语言的数据类型
1、整形数据
数据在内存中的存放方式:数值是以补码表示的。一个正整数的补码和该数的原码(即该数的二进制形式)相同。求负数的补码的方法:将该数的绝对值的二进制形式,按位取反再加一。
分类:
1 ) 基本整形(int),范围 -2^15 ~ (2^15 -1),即-32768~32767。
2)短整型(short)。
3)长整型(long)。
为了充分利用变量的值的范围,此时可以将变量定义为“无符号”类型。加上修饰符unsinged和singed,上面的数据可以变为6种整形变。如果不指定unsinged或者指定singed,则存储单元中最高位代表符号(0为正,1为负)无符号(singed)型变量只能存放不带符号的整数(且存储单元中全部二进位用作存放数本身而不包括符号)而不能存放负数,存放正数的范围比一般整数型变量中的正数的范围扩大一倍。不指定unsinged和singed,默认隐含为singed。long>int>short 。(整形数据在内存中占两个字节)12345u在内存中按unsinged int规定的方式存放,-12345u则先将其补码53191,然后按无符号数存储。还有123l、432L等,往往用于函数调用。函数的形参为long int型,则要求实参数也为long int型。
2、浮点型数据
2.1、浮点型数据在内存中的存放形式
一个浮点型数据一般在内存中占4个字节(32位)。分为小数部分和指数部分按照指数形式存储。
2.2、分类
1)单精度(float型)。2)双精度(double型)。3)长双精度(long double型)
程序内printf函数中的 "%f"是输出浮点数时指定的格式符。
f = 2.45678 * 4523.65;系统先把2.45678和4523.65作为双精度数,然后进行相乘的运算,得到的乘积也是一个双精度数,最后取其前七位赋值给浮点型变量f 。但是运算速度降低了,如果在数的后面加字母f或者F,这样系统就会把他们按单精度(32位)处理。
3、字符型数据
程序内printf函数中的 "%c"是输出字符数据时指定的格式符。
字符常量 使用单撇号(' ')括起来的一个字符。
内存存储:将一个字符常量放到一个字符变量中,是把该字符的相应的ASCII代码放到存储单元。一个字符数据既可以以字符形式输出,也可以以整数形式输出,(ASCII(int) <=> 字符(char))。
字符串常量 使用一对双撇号(" ")括起来的字符序列。
'a' 和"a"的区别:"a"以字符 '\0'作为字符串结束标志。
混合数据运算的转换方向(char、short)->int ->unsinged -> long -> double <- float 。
箭头方向只表示数据类型级别的高低。不能理解为int型先转换为unsinged int型,再转为long,再转为double(错误)。int和double数据运算,int直接转为double进行运算。
逗号运算符和逗号表达式:表达式1,表达式2 求解过程为先求解表达式1,再求解表达式2.整个表达式的值为表达式2的值。(a = 3*5 ,a*4)赋值运算符的优先级高于逗号运算符,所以结果为60。