1.关系运算符
判断的标准要有对错,bool 1字节 取值很简单:只有对错 真假、true|false
ps:易犯错误 == 才表示比较 ,偶尔会写成 =
bool:bA1 = true;只要不为零 就是真 包括负数;
bool bA{ bool(100) };
int nA{ bA };
std::cout << nA << char(10);
nA 等于1;原因很简单bool的值只有0 和 1 ;但是赋值的时候可以用正数负数赋值。
#include <iostream>
int main()
{
int a{ 500 };
int b{ 1000 };
//bool c = a == b;//false true
//std::cout << c << std::endl;
std::cout << std::boolalpha;
bool bA{ bool(100) };
int nA{ bA };
std::cout << (a == b);
std::cout << nA << char(10);
return 0;
}
ps:如果正常的用关系运算符比较A == B结果是true或者false;但是如果手滑写成了A = B 那么结果是true还是false呢? 见if章
2.if
遇到分号 ; 结束
#include <iostream>
int main()
{
int a{ 5000 };
int b{ 10000 };
if (a == b) std::cout << "一样有钱" << std::endl;
if (a = b) std::cout << "一样有钱" << std::endl;
return 0;
}
if(a= b) 和a无关系 a = b 是一种运算,做完赋值运算 再做布尔运算;所以if(a=b) 本质上就等于 if(b);b等于多少就是多少,b =0就是false b = 1就是true;就是看b的值
3.if...else...
else 就近 和 if 在一起
看一下只用if
#include <iostream>
int main()
{
char c;
std::cout << "请输入一个字符:" << std::endl;
std::cin >> c;
if (c >= 48) {
if (c <= 57) printf("你输入的是一个数字");
if (c >= 65)
{
if (c <= 90) {
std::cout << "这是一个大写字母" << "转换为小写字母后" << (char)(c + 32) << std::endl;
}
}
if (c >= 97)
{
if (c <= 122) {
std::cout << "这是一个小写字母" << "转换为大写字母后" << (char)(c - 32) << std::endl;
}
}
}
return 0;
}
把可删的大括号删去后
#include <iostream>
int main()
{
char c;
std::cout << "请输入一个字符:" << std::endl;
std::cin >> c;
if (c >= 48) {
if (c <= 57) printf("\n你输入的是一个数字");
if (c >= 65)
if (c <= 90)
std::cout << "\n这是一个大写字母" << "转换为小写字母后" << (char)(c + 32) << std::endl;
if (c >= 97)
if (c <= 122)
std::cout << "\n这是一个小写字母" << "转换为大写字母后" << (char)(c - 32) << std::endl;
}
return 0;
}
4.逻辑运算符
一元运算符大于二元运算符、位运算符大于逻辑运算符、
~ 和 ! 是平级的 因为都是一元运算符, 与运算大于或运算 & > | 、 && > ||
#include <iostream>
int main()
{
char c;
std::cout << "请输入一个字符:" << std::endl;
std::cin >> c;
if (c >= 48 && c <= 57)
printf("\n你输入的是一个数字");
if (c >= 65 && c <= 90)
std::cout << "\n这是一个大写字母" << "转换为小写字母后" << (char)(c + 32) << std::endl;
if (c >= 97 && c <= 122)
std::cout << "\n这是一个小写字母" << "转换为大写字母后" << (char)(c - 32) << std::endl;
return 0;
}
逻辑运算符&& 要求两边的操作符都是bool值
思考一下;下面代码是否有区别
if(a^b) 等价于什么?
异或要为真的话 一方为真一方为假才可以
5.条件运算符(三元运算符)
优先级最低,因为是三元运算符
避免除数为0的写法
#include <iostream>
int main()
{
int cs;
std::cout << "请输入一个整数,我们将为你计算这个1万除以这个数以后的结果:" << std::endl;
std::cin >> cs;
int end = cs ? (10000 / cs) : 0;
std::cout << end;
return 0;
}
5.字符处理