数据数据类型char //字符 bool //布尔类型 short //短整型 int //整形 long //长整型 long long //长长整形 float //单精度浮点型 double //多精度浮点型 //没有字符串类型数据类型的大小#include stdio.h int main() { printf(%d\n,sizeof(char)); //1 printf(%d\n,sizeof(bool)); //1 布尔类型专门用来表示真假 printf(%d\n,sizeof(short)); //2 printf(%d\n,sizeof(int)); //4 printf(%d\n,sizeof(long)); //4 规定long int 类型 long为4或者8 printf(%d\n,sizeof(long long));//8 printf(%d\n,sizeof(float)); //4 printf(%d\n,sizeof(double)); //8 return 0; } // 1字节8bit占位符列举#includestdio.h int main() { printf( %d \n);//打印整形 printf( %c \n);//打印字符 printf( %s \n);//打印字符串 printf( abcdefg );//打印字符串 方法2 只有字符串可以直接打印 printf( %f \n);//打印单精度浮点型 默认打印小数点后六位 6.123456 printf( %lf \n);//打印多精度浮点型 printf( %zu \n);//打印 sizeof 返回值 printf( %d \n);//打印 sizeof 返回值 方法2 printf( %p \n);//打印地址 return 0; } //sizeof是关键字不是函数变量局部变量与全局变量#include stdio.h int a 1; //全局变量 在main函数前 int main() { a 2; //局部变量在代码块内部 { } 称为代码块 printf(%d\n,a); return 0; } //输出结果 2 局部变量优先与全局变量作用域与生命周期局部变量作用域是变量所在的代码快。生命周期进入代码块开始出代码块结束。全局变量作用域是整个工程。 生命周期整个工程的生命周期。存储位置局部变量和函数参数存储在内存的栈区全局变量和静态变量存储在内存的静态区变量的使用//求两数之和 #include stdio.h int main() { int a,b,c; printf(请输入两个操作数); scanf_s(%d %d,a,b); c a b; printf(%d\n,c); return 0; }由const定义的变量#include stdio.h int main() { const int a 2; a 6; printf(%d\n,a); return 0; } //工程报错原因分析①由const定义过后的变量其变量值无法再次改变。补充const使得变量具有了常属性但仍是变量无法当作常量去使用如在定义数组的时候const int a 10; int arr[a] {0}; //工程报错。 原因分析 int arr[常量]{0} a只是具有了常属性但不能当常量去使用。字符串定义使用双引号括起来的一串字符就叫字符串。如 “abcdefg”字符串的打印格式可以使⽤ %s 来指定也可以直接打印如下#include stdio.h int main() { printf(%s\n, abcdefg); printf(abcdefg); return 0; }①字符串中⼀个特殊的知识就是在字符串的末尾隐藏放着⼀个\0字符这个\0字符是字符串的结束标志。②\0是字符串的结束标志。所以我们在使⽤库函数 printf() 打印字符串或者strlen()函数 计算字符串⻓度的时候遇到 \0 的时候就⾃动停⽌了。③strlen函数求字符串的长度遇到/0停止/0不计入长度之中。④验证\0在字符串中的作用#include stdio.h int main() { char arr1[] { abc }; char arr2[] { a,b,c,d }; printf(%s\n,arr1); printf(%s\n,arr2); return 0; } //输出结果 //abc //abc贪贪贪贪贪贪对2*…………%%……arr2字符数组在打印的时候打印了 a 、 b 、 c 后还打印了⼀些随机值因为 arr2 在末尾的地⽅没有 \0 字符作为结束标志在打印的时候没有停⽌。但是 arr1 的打印就是完全正常的就是因为 arr1数组是使⽤字符串常量初始化的数组中有 \0作为结束标志打印可以正常停⽌。⑤ 遇到下\0结束打印#include stdio.h int main() { printf(%s\n,abc\0def); return 0; } //输出abc转义字符定义顾名思义转变字符原来的意思。例n — \n#include stdio.h int main() { printf(%s,abcdnefg); printf(%s,abcd\nefg); return 0; } //输出结果 //abcdnefg /*abcd efg*/ 换了一行 这就是转义字符的问题\n是⼀个转义字符表⽰换⾏的意思我们可以简单的理解为 \ 让n的意思发⽣了转变n本来是⼀个普通的字符被 \ 转义为换⾏的意思。C语⾔中转义字符具体如下#include stdio.h int main() { printf(\?); //打印 printf(\); //打印 printf(\); //打印 printf(\\); //打印 / printf(\a); //警报电脑bi一声 printf(\b); //退格键光标回退⼀个字符但不删除字符。 printf(\r); //回⻋光标移到同⼀⾏的开头 printf(\n); //换行 printf(\ddd); // \ddd d d d表⽰1~3个⼋进制的数字。 如 \130 表⽰字符X printf(\xdd); // \xdd d d表⽰2个⼗六进制数字。 如 \x30 表⽰字符0 return 0; }算术操作符加) 减(-) 乘(*) 除(/)int main() { //加减乘 int a 1; int b 2; int c a-b; // -1 int c ab; // 3 int c a*b; // 3 //除法 分为 整数除法 和 小数除法 //整数除法 int d; d a / b; //d0 1/2为什么结果不为0.5? 因为上述a,b为整数执行整数除法若想得到小数结果则需要执行小数除法整数除法如何转变为小数除法呢 //小数除法:除号左右两边的操作数至少有一个为小数 d 1.0 /2; //0.5 d 1 / 2.0 //0.5 return 0 }整数取余操作符%int main() { int a 10; //%取余操作符只能用于整数之间 int b 3; int c; c a % b; // c 10 % 3 3 //负数取余规则结果的符号由第一个操作数决定 11 % 5 1; -11 % 5 -1; -11 % -5 -1; return 0; }赋值运算符 判断相等运算符判断不相等运算符int a 10; // 赋值运算符 a 10; //判断a是否等于10 等于为真 a !10;//判断a是否不等于10 不等于为真复合赋值符-*/a 3 //a a3 a - 3 //a a-3 a * 3 //a a*3 a / 3 //a a/3单目操作符--前置//先后使用 int a 10; int b a; //a先自增为11后将11赋值给b // a 11 b 11后置//先使用后 int a 10; int b a; //先将10赋值给ba在自增为11 // a 11 b 10前置--//先--后使用 int a 10; int b --a; //a先自减为9,在将9赋值给b // a 9 b 9后置--//先使用后自减 int a 10; int b a--; //先将10赋值给ba后自减为9 // a 9 b 10条件操作符exp1 ? epx2 : epx3 //表达式1为真吗为真执行表达式2,为假执行表达式3 int a 2; int b 6; a b ? a : b //执行b 输出为6强制类型转换int a 3.14;// int为整形 3.14为浮点型 类型不一报错 //强转 int a (int)3.14; //a 3printf()函数作用;将文本内容打印输出到屏幕f为format可定制输出文本格式printf打印完后不会再行尾自动添加换行若想换行需要自行添加 换行字符/n调用printf需包含头文件 #includestdio.h参数 占位符 1 参数与占位符一一对应//参数 占位符 1 参数与占位符一一对应 #include stdio.h int main() { printf(%s say:there are %d apples!!!,zhangsan,10); return 0; // 参数一 %s say:there are %d apples!!! // 参数二 zhangsan 对应 占位符%s // 参数三 10 对应 占位符%d }输出格式限定最小宽度 不加点默认输出格式右对齐总是输出正负号限定小数位数限定最小宽度 与 限定小数连用最小宽度和小数位的传参限定最宽字符串 加点//限定最小宽度 int a 123; printf(%5d/n,a); //最少输出5位不足5位空格补齐 %5d 不加点 // 123 int b 1234567; printf(%5d/n,a);//多于五位正常输出,不限定最多输出几位区别于字符串 //1234567 //默认输出格式右对齐 int a 10; printf(%5d/n,123); // 123 输出默认右对齐 左对齐加一个- printf(%-5d/n,123); // 123 输出改为左对齐//总是输出正负号加一个 int a 123; int b -123; printf(%5d/n,123);//123 printf(%5d/n,-123);//123 //加一个对负数输出没有影响不加也输出负号主要影响的是正数让正数前面显示正号//限定小数位输出 float a 3.123456; printf(%.3lf,a); // %.3lf 限定输出小数点后3位 // %f和%lf默认输出小数点后6位//限定输出最少位数与限定小数连用 float a 3.123456; printf(%6.3lf,a);//限定最少输出6位限定小数点3位 // 3.123 补一个空格//最小宽度和小数位的传参 float a 3.123456; printf(%6.3lf,a); //*号传参上下效果一样 float a 3.123456; printf(%*.*lf, 6,3,a);//限定最宽字符串 char arr[] {Hello world}; //%s默认全部输出但有风险所以限定最宽输出 printf(%.5s) // %.5s 加点 //Hello 后面多余的不输出总结printf(%5d,a);//限定最小宽度 printf(%-5da);//改为左对齐默认输出格式右对齐 printf(%5da);//总是输出正负号 printf(%.3lf,a);//限定小数位数 printf(%6.3lf,a);//限定最小宽度与限定小数连用 printf(%.5s,a);//限定最宽字符串