自增:a++或++a 自减:a--或--a
#include <stdio.h>
int main(){
int a=1;
//自增 可以用a++或++a 在运算过程中时,++a先加再运算,a++先运算再加
int b = a++;//b的值为a自增前的值
//++a 先加1 再使用a的值
int c = ++a;//c的值为a自增后的值
printf("%d\n",c);
printf("%d\n",b);
printf("%d\n",a);
return 0;
}
问题:在该代码中++a是在a++的前提下运算的 那么有没有什么办法让++a和a++都以a为前提进行计算
##赋值:把等号右边的值保存到等号左边的变量
#include <stdio.h>
int main(){
//赋值
int a = 10;
a = a + 1;
//a += 1 该式与上式等效
printf("%d\n",a);
return 0;
}
a++与a+=1等效
练习题
#include<stdio.h>
int main(){
int a = 10, b = 5;
b += a;//b=15
b -= 3;//b=12
a -= b;//a=-2
a *= b;//a=-24
printf("a=%d,b=%d\n",a,b);
return 0;
}
##关系运算符
#include <stdio.h>
int main(){
//关系运算符
int a = 10 ,b = 20;
printf("%d\n",a == b);
printf("%d\n",a != b);
printf("%d\n",a > b);
printf("%d\n",a < b);
printf("%d\n",a >= b);
printf("%d\n",a <= b);
return 0;
}
##逻辑运算符
#include <stdio.h>
int main(){
//逻辑运算符
//&& || !
//运算结果:0(不成立)或1(成立)
//&&:两边都成立,结果才成立 (与,并且)
printf("%d\n", 5 > 3 && 5 > 2);
printf("%d\n", 5 > 3 && 5 < 2);
printf("%d\n", -2 && -2);
printf("%d\n", 0 && 0);
printf("%d\n", 0 && 1);
//||:两边只要有一个成立,结果就成立 (或,或者)
printf("%d\n", 5 > 3 || 5 > 2);
printf("%d\n", 5 > 3 || 5 < 2);
printf("%d\n", -2 || -2);
printf("%d\n", 0 || 0);
printf("%d\n", 0 || 1);
//!:取反,成立变为不成立,不成立变为成立 (非)
printf("%d\n", !0);
printf("%d\n", !1);
printf("%d\n", !(-2>0));
return 0;
}
=代表赋值 ==表示等于
练习:输入一个两位数 该数子不能包含7 符合要求输出1 不符合输出0
#include <stdio.h>
int main(){
//输入一个两位数 该数子不能包含7 符合要求输出1 不符合输出0
int num;
printf("请输入一个两位数:");
scanf("%d",&num);
printf("%d\n", num / 10 != 7 && num % 10 != 7);
return 0;
}
短路
#include <stdio.h>
int main(){
//&&的短路
int a = 1,b=5;
//a > 0 && b++;//b++被执行了该步骤为正确步骤
a > 2 && (b++);//b++被短路了因为a>2为假
printf("a=%d b=%d\n",a,b);
return 0;
}
||(并)也可以短路 当前面的式子成立后 就不会算后面的式子了
例:3>0||b++ 中b++就被短路了 因为3>0成立 所以输出的结果就是1