数据类型。
*c语言是一个有类型的语言。
C语言的变量必须在使用之前定义,而且要确定类型。
了解:c以后的两个发展:
a、c++/java更加的强调类型,对类型的检查更加严格。
b、javaScript、Python、PHP则不强调,甚至不用事先定义。
*支持:强类型有助于提早发现程序中的一些简单的错误。
*反对:强类型过于强调逻辑类型迫使面对最底层,实现而非事务逻辑。
*面对底层则强调类型,面向应用的则更强调事务逻辑。
c、C语言的类型。(四大类有五个)
没有特殊要求整数只用int,浮点只用double。
整数: char, short, int, long, long long
浮点数: float, double, long double
逻辑: bool
指针: 自定义:
d、类型有何不同。
输入输出的格式化:%d, %ld, %lf。
所表达的范围 :char<short<int<float<double.
内存中所占的大小:1个字节到16个字节。
内存中的表达形式:二进制(补码),编码。
e、大小
char:1字节。(8比特) short:2字节。 int:取决于cpu/编译器。 long:与int一致。 long long:8字节。
f、补码
00000000-00000001->11111111 补码时这里的11111111为-1而纯二进制时为255 unsigned 如果一个字面量常数想表达自己是unsigned
eg:255U/u unsigned char c= 255 printf为255 若没有unsigned则输出-1。
g、输入和输出(进制)
十进制输出 %d %o:输出八进制 %x:十六进制
h、浮点类型
float: double:
字长: 32 64
有效数字: +-(1.210-32~3.4*1038) +-(2.210-308~1.79*10308)
范围: 7 15
scanf: %f %lf
printf; %f,%e(输入一个科学计数法) %f,%e 在%和f之间加上.和数字就可以指定输出小数点的的后几位。(结果是四舍五入的)
eg:0.1234567 8901 7后面的都是无效的
i、浮点的范围和精度
printf输出inf表示无穷大 输出nan表示不存在
带小数点的字面量是double而非float,folat需要用f/F来表明身份。eg: 1.233f
j、char (character)
char:一种整数,也是一种特殊的字符。
*I、用单引号表示的字符字面量。
*II、'1':此为字符一 而不是1
*III、printf()和scanf()用%c来输出字符。
k、字符计算
I、一个字符加上一个数字得到ASCll码那个数后的一个字符。
II、两个字符的减,得到他们在表中的距离。
l、逃逸字符=转义字符
用于表达无法印出来的控制字符/特殊字符。
:回退一格 ":双引号 :到下一个表格位 ':单引号 :换行 :回车 :反斜杠
m、类型转换
I、自动类型转换
当运算符的两边出现不一致的类型时会自动转换成较大(范围更大)的类型。(一起运算的时候) -char -> short -> int -> long -> long long
-int -> float -> double
*对于printf来说,任何小于int的类型都会被转换成int,float则转换成 double
对于printf任何小于int的数都会被转换成int。float->double 而short不同,输入short则需要%hd.
II、强制类型转换。
(只是从那个变量计算出一个新的类型值,并不改变那个变量,值和类型都不变)
把一个量强制转换成另一个类型。
eg: (int)10.2 --double转换成int 会输出
(short)32 --int转换成short
强制转换的优先级高于四则运算。
eg:int i = (int)a /b
III、逻辑类型
bool类型 要加上 头文件#include <stdbool.h>,之后就可以使用bool和true、false。
n、逻辑运算。
逻辑运算是对逻辑量进行的运算,结果只有0/1。
I、!:
逻辑非-> 若a的结果是true就是false,a的结果是false就是true。
II、&&:
逻辑与 -> 若a与b都是true结果就是true,否则就是false。
III、||:
逻辑或 -> 只有a b两个都是false的时候才是false其他都是true。
try 如何写出数学中的区间呢? eg: 4 < x <6 错误的示范 应该这样写:x>4 && x<6
IV、短路
若&& || 的左边已经能够决定结果了,那么右边的也就不用继续执行了。
o、条件运算符
条件运算符的优先级高于赋值运算符,但低于其他运算符。
count =(count >20 )? count -10: count +10;
=>if (count >20)
count =count-10;
else
count =count+10; (等同于上面的条件运算符)
逗号运算符:优先级是所有运算符中最低的。(主要是在for语句中使用得比较多) eg;for(i=0,j=10;i<j;i++,j--)......