【C语言学习笔记】MOOC——数据类型

tech2022-10-24  113

数据类型

C语言的类型 整数:char、short、int、long、long long 浮点数:float、double、long double 逻辑:bool 指针 自定义类型

整数的内部表达 我们知道计算机的内部都是二进制,那么二进制是如何表示负数的吗?

在思考这个问题前我们先看看我们最熟悉的十进制是如何表示负数的。 是的,就是在每个数字面前通过单独的一个符号位(+或-或省略)来表示数字的正负性。

自然而然,对于二进制而言是否也是如此,答案却是否定的。 对于二进制而言我们采用的是补码形式表示负数,在了解补码前我们先了解一下负数。

两个相反数相加为0,即-1 + 1 = 0。 1的二进制表示为00000001,那么-1的二进制表示就是0 - 1,而0的二进制表示为00000000。

故补码的意义就是拿补码和原码相加能够得出一个溢出的’0’。 即-1的二进制表示为11111111

由此类推,对于-a而言他的二进制补码形式为0-a,即2^n - a,这里的n为此数据类型的位数。

不同数据类型的输入与输出 在scanf和printf中经常因为用错字母而导致代码出错 还需要特别注意,若要输入双精度浮点数double,需用%lf(printf中没有限制,二者均可)。

深入了解char 字符?整数? char和int有什么区别呢?虽然在C语言中char和int同属于整数类型,但char字节长度为1、8位,int字节长度为4、32位。 具上所知,故char可表示的字符数量为2^8,即256个。 但既然char也被归属于整数类型,那char自然也能用整数形式表示。 关于abcdef的字符到底用0-255的哪些数字表示,详见ASCII码。

#认识1 char c; char d; c = 1; d = '1'; printf("c=%d\n", c); printf("d=%d\n", d); //‘1’的整数值为49 #认识2 char c; scanf("%c", &c);//输入1 printf("c=%d\n", c);//输出49 printf("c='%c'\n", c);//输出‘1’ #认识3 int i; char c; scanf("%d", &i);//输入1 c = i; printf("c=%d\n", c);//输出1 printf("c='%c'\n", c);//输出‘ ’

char c = 49; 若以整数形式输出c,则c = 49; 若以字符形式输出,则c=1(采用ASCII编码)

最新回复(0)