听翁恺讲C语言5-数据类型

数据类型。

*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--)......

原文地址:https://www.cnblogs.com/wpoem/p/12448029.html