10.6:关系操作符:
>:大于
>=:大于等于
<:小于
<=:小于等于
!=:用于测试“不相等”
==:用于测试“相等”
//关系操作符: #include <stdio.h> int main() { int input1 = 0; int input2 = 0; while (scanf("%d %d", &input1, &input2) == 2) //运用scanf方法传参数要加取地址符&,不要老忘记!!! { if (input1 == input2) //==:等于 { printf("%d 等于 %d\n",input1 ,input2); } else { if (input1 > input2)// >:大于 { printf("%d 大于 %d\n", input1, input2); } else if (input1 < input2)// <: 小于 { printf("%d 小于 %d\n", input1, input2); } } } return 0; }
10.7:逻辑操作符:
&&:逻辑与(并且),两个操作数都为真,才为真,只要有一个为假,就是假
||:逻辑或(或者),两个操作数只要有一个为真,则为真,两个同时为假,才为假
//逻辑操作符: #include <stdio.h> int main() { int a = 0;//默认:0为假 int b = 1;// 非0为真 if (a && b)//&&:逻辑与 { printf("两个操作数同时为真"); } else if (a || b)//||:逻辑或 { printf("两个操作数其中一个为真"); } return 0; }
10.8:条件操作符(三目操作符):
exp1 ? exp2 : exp3 根据表达式1的结果来确定是表达式2执行还是表达式3执行(exp:表达式) (exp1) (exp2) (exp3)
真--> 执行 - 不执行 表达式2(exp2)执行的话,整个表达式的结果就是表达式2的结果
假--> 不执行 - 执行 表达式3(exp3)执行的话,整个表达式的结果就是表达式3的结果
(三目操作符(表达式)----- 恰好有三个表达式)
//条件操作符(三目操作符) #include <stdio.h> int main() { int a = 0; int b = 0; //输入 scanf("%d %d",&a ,&b); int m = 0; //三目操作符:(逻辑类似下面的if...else...语句) // 写法一: //(a > b) ? (m = a) : (m = b) // exp1 exp2 exp3 //写法二: m = (a > b ? a : b); //表达式2(exp2)执行的话,整个表达式的结果就是表达式2的结果 //表达式3(exp3)执行的话,整个表达式的结果就是表达式3的结果 /*if (a > b) m = a; else m = b;*/ //a = b的话,进入else赋值哪个都一样 printf("%d\n", m); return 0; }
10.9:逗号表达式:
exp1, exp2, exp3, ...expN 拿逗号隔开的一串表达式(从左向右依次计算) (exp:表达式)
//逗号表达式: #include <stdio.h> int main() { int a = 3; int b = 2; int c = 5; //逗号表达式:exp1, exp2, exp3, ...expN //从左向右依次计算 //逗号表达式的结果时最后一个表达式的结果 int d = (a+=3, b=5, c=a+b, c-4); // a=a+3=6 b=5 c=6+5=11 c-4=7 // 最后的结果=7 printf("%d\n",d); return 0; }
10.10:下标引用、函数调用和结构成员:
[] () . (后期再学) ->(后期再学)
*[] -- 下标引用操作符(数组在引用时的一个习惯):
// [] -- 下标引用操作符: #include <stdio.h> int main() { int arr[10] = {1,2,3,4,5,6,7,8,9,10}; //下标: 0 1 2 3 4 5 6 7 8 9 printf("%d\n",arr[5]);//取数组中下标为5的值 // []是一个操作符,有两个操作数:这里一个是arr,一个是5 return 0; }
*() -- 函数调用:
//():函数调用操作符: #include <stdio.h> int Add(int x, int y)//这里的括号是语法限定 { return x + y; } int main() { int z = Add(3,5);//调用Add()函数,这里的()就是函数调用操作符 //这里有三个操作数: Add 3 5 printf("%\d\n",z); printf("hehe");//调用printf()函数,这里的()就是函数调用操作符 //这里有两个操作数“ printf "hehe" return 0; }
11*关键字:
C语言提供了丰富的关键字,这些关键字都是语言本身预先设定好的,用户自己是不能创造关键字的。
11.1--修饰变量的关键字:
auto -- 局部变量自动创建,自动销毁
extern -- 声明外部符号
register -- 寄存器
static -- "静态"
*auto:
//关键字:auto #include <stdio.h> int main() { auto int num = 0; //局部变量本身都是有auto(自动创建,自动销毁)的,所有干脆都给省略掉了 //局部的变量是进入作用域创建,出了作用域销毁 //这里是 自动创建、自动销毁的 -- auto return 0; }
*static:
(栈区、堆区、静态区:)
在C语言中,static是用来修饰变量和函数的:
1.修饰局部变量 - 称为静态局部变量
(未使用static时:)
//static 修饰局部变量 #include <stdio.h> void test() { int a = 5; a++; printf("%d\n",a); } int main() { int i = 0; while (i < 10) { test(); i++; } return 0; }
(使用static后:变量a变成静态变量,存放在静态区)
//static 修饰局部变量 #include <stdio.h> //本来一个局部变量是存放在栈区的,如果被static修饰就存储到静态区了 //static 修饰局部变量改变了变量的存储类型(位置),使得这个静态变量的生命周期变长了,直到程序结束才结束 void test() { static int a = 5;//加上static属性,变成静态变量,程序结束才销毁 //被static修饰的局部变量 //出了作用域后,不再自动销毁,进入作用域也不再自动创建 //变量a在编译时就已经创建了 a++; printf("%d\n",a); } int main() { int i = 0; while (i < 10) { test(); i++; } return 0; }