1. \0(转义字符)是一个字节,空格也是一个字节。
2. =是赋值(如:int a = 0;这个是初始化,再写a = 1;这个是赋值)
连续赋值(从左到右)
如:int a = 3;int b = 4;int c = 5;
a = b = c + 5;//a = 10,b = 10,c = 5
==是判断(一般放在if while的()里等)。
3. 全局变量(放在main函数外面定义的变量)
当变量未初始化时(如:int a;),之后也没有进行赋值,则a默认为0
局部变量(在{}内定义的变量)
当变量未初始化时(如:int a;),之后也没有进行赋值,则a默认为随机值
注意:当局部变量与全局变量同名时,局部变量优先(“同名局部优先”)
如:#include <stdio.h>
int a = 3;
int main()
{
int a = 4;
printf("%d", a);
return 0;
}
4. /(除法),若整数/整数,结果为整数(如:5/2 = 2),但只要其中有一个浮点数,结果就带有小数(如:5.0/2 = 2.500000,或为5/2.0,或5.0/2.0,我用vs2022默认为float型)
5. %(取模或取余),只能是整数%整数
若负数取模,结果正负号由第一个运算符的正负号决定
如:#include <stdio.h>
int main()
{
printf("%d\n", 11 % -5);//1
printf("%d\n", -11 % -5);//-1
printf("%d\n", -11 % 5);//-1
return 0;
}
6. 输出格式
最小宽度
%5d输出的宽度至少为5位,不够补0,默认右对齐,该数大于5位就打印全部
%12f输出的浮点数至少12位,默认小数点后六位,注意:小数点也算一位
最小小数位数
%.2f小数点后保留2位,注意:会四舍五入(如0.467,用%.2f打印为0.47)
输出部分字符串
printf("%.5s\n","hello world") //"hello"
7. scanf的返回值
如果没有读取任何项,或考匹配失败,则返回0。
如果在成功读取任何数据之前,发生了读取错误或者遇到读取到文件结尾,则返回常量EOF。
如果读取成功,返回scanf读取的项的个数
#include <stdio.h>
int main()
{
int a=0;int b=0;
float f = 0.0f
int r = scanf("%d %d %f", &a, &b, &f);
printf("a=%d b=%d f=%f",a, b, f);
printf("r = %d\n",r);//r为scanf读取的项
return 0;
}
输入输出测试:1 2 3.14 a = 1,b = 2,c = 3.140000,r = 3
若输入1 2 加三次Ctrl+z(vs环境),可提前结束
应用
#include <stdio.h>
int main()
{
int a, b;
printf("please input two numbers:>");
while (scanf("%d%d", &a, &b) == 2)
{
if (a > b)
printf("%d > %d\n", a, b);
else if (a == b)
printf("%d = %d\n", a, b);
else
printf("%d < %d\n", a, b);
}
return 0;
}
可以多次输入
8. scanf中的占位符
%d:整数。
%f:float 类型浮点数。
%lf:double 类型浮点数
%Lf:long double 类型浮点数
%s :字符串。
%[]: 在方括号中指定一组匹配的字符 (比如 %[-9]),遇到不在集合之中的字,匹配将会停止。
注意:除%c以外,都会忽略起首的空白字符,若要跳过,scanf(" %c".&ch)
要特别说一下占位符 %s ,它其实不能简单地等同于字符串。它的规则是,从当前第一个非空白字符开始读起,直到遇到空白字符 (即空格、换行符、制表符等) 为止。
9. 赋值忽略符
%*c
有时,用户的输入可能不符合预定的格式。
scanf("%d-%d-%d",&a,&b,&c);这时必须输入 数字-数字-数字,若想随便输入,可以写成这样(“%d%*c%d%*c%d",&a,&b,&c),这时输入 数字-数字-数字,数字——数字——数字 都可以