C语言的数据类型和变量,常量

C语言的数据类型和变量,常量 一.数据类型整体的分布1.内置类型字符型char整型int浮点型float单精度double双精度布尔类型_Bool2.派生类型指针类型char*int*等等3.自定义类型数组结构体枚举联合体二.具体数据类型的特点1.字符型character用char表示字符用achar c; printf(%c,a);2.整型integer用int表示表示整数int a; printf(%d,a); printf(100);3.浮点型floatfloat 单精度浮点型 double 双精度浮点型表示3.14等float num1; double num2; printf(%f %f,num1,num2);4.布尔类型:C语⾔在C89/C90时期并没有为布尔值单独设置⼀个类型使⽤整数 0 表⽰假⾮零值表⽰真。 后来在 C99 标准中也引⼊了 布尔类型是专⻔表⽰真假的。布尔类型变量的取值是 true 或者 false 这2个符号是定义在stdbool.h 头⽂件中的。布尔类型的使⽤⼀般得包含头⽂件。#include stdbool.h _Bool flag true; if (flag) printf(I like C\n);三.类型修饰符1.short 和long : int ⻓度是4个字节 short int 类型的⻓度是2个字节。short [int] //短整型 long [int] //⻓的整型 long long [int] //⻓的整型 long double //C99中引⼊2.要想知道每个数据的类型的⻓度我们可以使⽤ 符 s 1 代码块 sizeof(type) • sizeof 来计算 sizeof 是C语⾔的⼀个操作 izeof 可以算出⼀个数据类型的⻓度单位是字节使⽤的⽅法就是sizeof(type)type就是对应的数据类型 sizeof 计算的结果是 size_t 类型的打印的时候使⽤,,应该⽤ %zu 的占位符请看下⾯的代码#include stdio.h int main() { printf(char: %zu\n, sizeof(char)); printf(_Bool: %zu\n, sizeof(_Bool)); printf(short: %zu\n, sizeof(short)); printf(int: %zu\n, sizeof(int)); printf(long: %zu\n, sizeof(long)); printf(long long: %zu\n, sizeof(long long)); printf(float: %zu\n, sizeof(float)); printf(double: %zu\n, sizeof(double)); printf(long double: %zu\n, sizeof(long double)); return 0; }3.signed 和unsigned:signed 关键字表⽰⼀个类型带有正负号可以表⽰正整数、负整数和0 unsigned 关键字表⽰该类型不带有正负号只能表⽰零和正整数。对于 int 类型默认是带有正负号的也就是说 int 等同于 signed int 。 由于这是默认情况关键字 signed ⼀般都省略不写但是写了也不算错。 char 有可能是 但是C语⾔中 是编译器的具体实现定义的。这⼀点和 signed char 也有可能是 unsigned char 具体等价于哪个 int 类型是有差异的。 我们前⾯通过 sizeof 算出⻓度的类型是 size_t size_t 就是⽆符号整型因为⻓度不可能是 负数。整型家族的取值范围可以在limits.h 这个头⽂件中查看浮点型家族的取值范围可以在 float.h 这个头⽂件中查看四.ASCII字符集和转义字符1.字符A~Z的ASCII码值从65~90按照字⺟顺序是递增1字符a~z的ASCII码值从97~122按照字⺟顺序是递增1对应的⼤⼩写字符(a和A)的ASCII码值的差值是32数字字符0~9的ASCII码值从48~57按照数字顺序是递增1换⾏ \n 的ASCII值是10在这些字符中ASCII码值从0~31这32个字符是不可打印字符⽆法打印在屏幕上观察#include stdio.h int main() { printf(%d\n, X); printf(%d\n, #); return 0; }2.转义序列\? 在书写连续多个问号时使⽤防⽌他们被解析成三字⺟词在新的编译器上没法验证了。\⽤于表⽰字符常量\ ⽤于表⽰⼀个字符串内部的双引号\\ ⽤于表⽰⼀个反斜杠防⽌它被解释为⼀个转义序列符。\a 警报这会使得终端发出警报声或出现闪烁或者两者同时发⽣。\b 退格键光标回退⼀个字符但不删除字符。\f 换⻚符光标移到下⼀⻚。在现代系统上这已经反映不出来了⾏为改成类似于 \v 。\n 换⾏符⼀般使⽤在屏幕上打印信息时实现换⾏的效果\r 回⻋符光标移到同⼀⾏的开头。\t 制表符光标移到下⼀个⽔平制表位通常是下⼀个4/8的倍数。\v 垂直分隔符光标移到下⼀个垂直制表位通常是下⼀⾏的同⼀列。\ddd ddd表⽰1~3个⼋进制的数字。 如 \130 表⽰X字符的8进制表⽰形式\xdd dd表⽰2个⼗六进制数字。 如 \x30 表⽰字符0 字符的16进制表⽰形式#include stdio.h #include string.h int main() { printf(%zu\n, strlen(c:\add\test\007\vip.c)); return 0; }