C语言day03
类型限定符:
extern 表示声明,没有内存空间,不能提升
const 定义一个常量
volatile 防止编译器优化代码
register 定义一个寄存器变量
字符串 用""双引号引着的
字符 用单引号引着的
C语言一定有一个结束标记’\0’
printf格式化输出
格式 | 表示 | 类型 |
---|---|---|
%d | 有符号 - 十进制整型 | int |
%u | 无符号 - 十进制整型 | unsigned int |
%o | 八进制 | |
%x | 十六进制 | |
%hd | 有符号 - 短整型 | short |
%hu | 无符号 - 短整型 | unsigned short |
%ld | 有符号 - 长整型 | long |
%lu | 无符号 - 长整型 | unsigned long |
%lld | 有符号 - 长长整型 | long long |
%llu | 无符号 - 长长整型 | unsigned long long |
%c | 字符型 | char |
%f | 浮点型 | float |
%lf | 双精度浮点型 | double |
%c | 字符 | char |
%s | 字符串,打印到\0结束 | String |
%m.df | 实型 一共有m位(整数.小数.小数点),n位小数 | |
%0m.df | 实型 一共有m位(整数.小数.小数点),n位小数,前面不足用0表示 | |
%% | 输出一个百分号,因为 反斜杠\对%转义无效 | 显示一个百分号 |
%Ns | 显示N个字符串,不足的用空格向左填充 | |
%-Ns | 显示N个字符串,不足的用空格向右填充 | |
%0Ns | 显示N个字符串,不足的用0向左填充 | |
putChar(‘97’); 用来输出字符的
就是直接输出字符的和printf(‘97’);是一样的
putChar(’\n’); 打印换行
Scanner从键盘接收用户输入
前提:vs里面要在头部添加
# define _CRT_SECURE_NO_WARNINGS
或者使用scanf_s();方法
从键盘接收用户输入
1.接收 整数 %d
int a,b,c; //创建变量空间
scanf("%d %d %d",&a,&b,&c);
2.接收 字符 %c
char a,b,c;
scanf("%c %c %c",&a,&b,&c);
3.接收 字符串 %s
char str[10];
scanf("%s",str); //这里不用&符号,因为&符号代表地址值,而str本身就是地址值
隐患:
- 写字符串的时候具有安全隐患,如果存储空间不足,数据能存储到内存中,但是不被保护
- scanf在接收字符串是碰到 ,空格和 \n,会自动终止
getChar函数 从键盘获取一个字符
运算符
算术运算符
+
_
*
/
%
++
--
先 * / % 后 + -
除法运算后,得到的结果赋值给整型变量时,取整数部分。
除0 :错误操作。不允许。
对0取余:错误操作。不允许。
不允许对小数取余。余数不能是 小数。 35 % 3.4;
对负数取余,结果为余数的绝对值。10 % -3; --》 1
++ 和 --:
前缀自增、自减:
先自增/自减, 在取值。
int a = 10;
++a; // a = a+1;
后缀自增、自减:
int a = 10;
a++; // a = a+1;
先取值, 再自增/自减。
赋值运算
int a = 5;
a += 10; // a = a+10;
a -= 30; // a = a-30;
a %= 5; // a = a % 5;
比较运算符
== 判等。
!= 不等于.
< 小于
<= 小于等于
> 大于
>= 大于等于
13 < var < 16; ==> var > 13 && var < 16;
逻辑运算符
0为假,非0为真。(1)
逻辑非:!
非真为假, 非假为真。
逻辑与: &&(并且)
同真为真,其余为假。
逻辑或:|| (或)
有真为真。同假为假。
运算符优先级
[]() > ++ -- (后缀高于前缀) (强转) sizeof > 算数运算(先乘除取余,后加减)>
比较运算 > 逻辑运算 > 三目运算(条件运算)> 赋值运算 > 逗号运算
三目运算符
表达式1 ? 表达式2 : 表达式3
表达式1 是一个判别表达式。 如果为真。整个三目运算,取值表达式2。
如果为假。整个三目运算,取值表达式3。
默认结合性。自右向左。
类型转换
隐式类型转换:
由编译器自动完成。
由赋值产生的类型转换。 小--》大 没问题。 大 --》 小 有可能发生数据丢失。
int r = 3;
float s = 3.14 * r * r;
321: 256 128 64 32 16 8 4 2 1
1 0 1 0 0 0 0 0 1
char ch = 0 1 0 0 0 0 0 1
强制类型转换:
语法: (目标类型)带转换变量
(目标类型)带转换表达式
大多数用于函数调用期间,实参给形参传值。
if分支语句
if (判别表达式1)
{
判别表达式为真,执行代码。
}
else if(判别表达式2)
{
判别表达式1为假,并且判别表达式2,执行代码。
}
else if(判别表达式3)
{
判别表达式1为假,判别表达式2为假,判别表达式3, 执行代码。
}
。。。
else
{
以上所有判断表达式都为假, 执行代码。
}
switch分支
switch 分支:精确匹配.
switch(判别表达式)
{
case 1:
执行语句1;
break; // 防止case穿透
case 2:
执行语句2;
break;
case 3:
执行语句3;
break;
...
case N:
执行语句N;
break;
default:
其他情况的统一处理;
break;
}
while循环
while(条件判别表达式)
{
循环体.
}
do while循环
无论如何先执行循环体一次。然后在判断是否继续循环。
do {
循环体
} w