打卡第二天 笔记
算术操作符:
+、-、*、/、%
都是双目录操作符,也叫运算符。
/ :
- 两端是整数,得到的结果 为整数,丢弃小数部分。
- 要得到浮点数结果,两个运算数至少一个浮点数。
% :
- 返回两个整数相除的余值,只能用于整数。
赋值操作符和符合赋值符:
给变量赋值的操作符
int a=3;
int b=5;
int c=0;
c=b=a+3;//连续赋值,从右向左依次赋值。
复合赋值符
- += 、 -=
- *= 、 /= 、 %=
//对于一个数自增自减
int a=10;
a=a+3;
a=a-2;
//使用复合函数
a+=3;
a-=2;
单目录操作符:
++、--、+、-
int a=10;
int b=a++;//++的操作数是a,放在a前面,是前置++,先加1再赋值
int b=++a;//放在a后面,是后置++,先赋值再加一。
+ 和 -
+是正号,-是负号。
强制类型转换:
例
(类型)
int a=3.14;//a是int类型。3.14是double类型。编译器会报警告。
int a=(int)3.14;//将3.14强制类型转换为int类型。
占位符
- %d: 十进制整数。
- %f: ⼩数(包含 float 类型和 double 类型)。
- %lf:long double类型浮点数。
- %c: 字符。
- %s: 字符串。
- %p: 指针。
- 限定宽度
#include <stdio.h>
int main()
{
printf("%5d\n", 123); // 输出为 " 123"
return 0;
}
- 总是显⽰正负号
#include <stdio.h>
int main()
{
printf("%+d\n", 12); // 输出 +12
printf("%+d\n", -12); // 输出 -12
return 0;
}
- 限定⼩数位数
// 输出 Number is 0.50
#include <stdio.h>
int main()
{
printf("Number is %.2f\n", 0.5);
return 0;
}
最⼩宽度和⼩数位数这两个限定值,都可以⽤ * 代替,通过 printf() 的参数传⼊。
#include <stdio.h>
int main()
{
printf("%*.*f\n", 6, 2, 0.5);
return 0;
}
// 等同于printf("%6.2f\n", 0.5);
- 输出部分字符串
// 输出 hello
#include <stdio.h>
int main()
{
printf("%.5s\n", "hello world");
return 0;
}
上⾯⽰例中,占位符 %.5s 表⽰只输出字符串“hello world”的前5个字符,即“hello”。
printf
- printf() 的作⽤是将参数⽂本输出到屏幕
- printf() 是在标准库的头⽂件 stdio.h 定义的。使用这个函数之前,必须在源码文件头部引入这个头文件。
scanf
scanf() 函数⽤于读取⽤⼾的键盘输⼊。
scanf("%d", &i);
- 下⾯是⼀次将键盘输⼊读⼊多个变量的例⼦。
scanf("%d%d%f%f", &i, &j, &x, &y);
#include <stdio.h>
int main()
{
int x;
float y;
// ⽤⼾输⼊ " -13.45e12# 0"
scanf("%d%f", &x, &y);
return 0;
}
上⾯⽰例中, scanf() 读取⽤⼾输⼊时, %d 占位符会忽略起⾸的空格,从 - 处开始获取数据,读取到 -13 停下来,因为后⾯的 .不属于整数的有效字符。这就是说,占位符 %d 会读到 -13 。
第⼆次调⽤ scanf()时,就会从上⼀次停⽌解读的地⽅,继续往下读取。这⼀次读取的⾸字符是 . ,由于对应的占位符是 %f ,会读取到 .45e12,这是采⽤科学计数法的浮点数格式。后⾯的不属于浮点数的有效字符,所以会停在这⾥。
- 赋值忽略符
scanf() 提供了⼀个赋值忽略符 * 。只要把 * 加在任何占位符的百分号后⾯
#include <stdio.h>
int main()
{
int year = 0;
int month = 0;
int day = 0;
scanf("%d%*c%d%*c%d", &year, &month, &day);
return 0;
}
上⾯⽰例中, %*c 就是在占位符的百分号后⾯,加⼊了赋值忽略符 * ,表⽰这个占位符没有对应的变量,解读后不必返回。