C语言入门
1、基本数据类型
char short int long float double long long bool 如何计算数据类型或者变量在内存中所占的字节数?
#include<stdio.h>
#include<stdbool.h>
int main()
{
printf("char size:%lu\n",sizeof(char));
printf("short size:%lu\n",sizeof(short));
printf("int size:%lu\n",sizeof(int));
printf("long size:%lu\n",sizeof(long));
printf("float size:%lu\n",sizeof(float));
printf("double size:%lu\n",sizeof(double));
printf("long long size:%lu\n",sizeof(long long));
printf("bool size:%lu\n",sizeof(bool));
printf("true size:%lu\n",sizeof(true));
printf("false size:%lu\n",sizeof(false));
return 0;
}
使用运算符 sizeof(数据类型的名字 或者变量名)
特别注意: ## 布尔类型bool 要添加 #include<stdbool.h>
2、计量单位
1byte(字节) = 8个二进制数 1KB(千字节) = 1024字节 1M = 1024KB(千字节) 4 1G = 1024M 1T = 1024G 1G = 1024 * 1024*1024 字节
3、有符号数和无符号数
有符号数 (signed ) char a = -100 char a = 100; -->存储到内存中,最高位 表示符号位 1表示负数 0表示正数 无符号数 unsigned char a = 100;
4、数据溢出的知识点
unsigned char 0~255
(signed)char -128 ~ +127
正数:+0 ~ +127
负数:-0 ~ -127
由于+0 和 -0重复,-0表示 -128
unsigned short 0~65535(2^16-1)
unsigned int 0~4294967295(2^32-1)
#include<stdio.h>
#include<stdbool.h>
int main()
{
unsigned char a = 257;
char b = 129;
printf("a:%hhu\n",a);
printf("b:%hhd\n",b);
11 打印结果: 12 a:1 13 b:-127
5、整型数据在内存中的存储方式
整型数据(正数 、负数)在内存中是以二进制补码的方式存放的
总结1
1)当编译器 以整形的方式输出的时候(%d),它是以补码还原的方式进行解读。 2)当CPU将数据进行运算的时候,直接以内存中存放的形式进行运算,也就是数据运算的时候 使用补码 3) 以 %u的方式 输出 ,那么 值的范围 : 0 ~4294967295
(1)
unsigned char a = 255;
char b = 255;
printf("%d %u\n",a,a);
printf("%d %u\n",b,b);
255 255
-1 4294967295
(2)
unsigned short a = -1;
int b = a;
printf("%d\n",a);
printf("%d\n",b);
(3)
unsigned char a = -1;
unsigned int b = -1;
printf("%d %u\n",a,b);
6、char类型 数据 ----单个字符数据
字符常量 'a' 'c' '1'
char val1 = 'a';
char val2 = 'b';
printf("val1: %c %d\n",val1,val1);
printf("val2: %c %d\n",val2,val2);
val1: a 97
val2: b 98
97、98为ASCIL输出值
7、ascii 码
概念:char数据实际上是在内存存放的是一个小于255的编号(五符号整数)用来表示字符,这个编号叫做ASCII码。
如何查看 ascii 码?? 直接在虚拟机 man acsll
8、转义字符概念:
所有的ASCII码都可以用“\”加数字(一般是8进制数字)来表示。而C中定义了不能显示的ASCII字符,如’\0’,’\t’,’\n等,就称为转义字符,因为后面的字符,都不是它本来的ASCII字符意思了。它告诉编译器需要用特殊的方式进行处理
1 ‘\n’ —表示换行 2 ‘\0’ —表示空字符 字符串的结尾 就是以 空字符 为结束 “hello” —>默认会在后面加上 \0 " 3 ‘\t’ --制表符 按下 table按键的时候
’\0dd’ ddd表示1到3位八进制数,打印效果为该数字对应的ASCII字符 , d 为 0 ‘\xhh’ hh表示1到2位十六进制数,打印效果为该数字对应的ASCII字符
|