ie 10 常用网站,我国哪些网站是做调查问卷的,湖北省住房和城乡建设厅门户网站,wordpress随机发布文章一、内容概要内容提neirong关系运算符 逻辑运算符 逗号运算符 位运算二、运算符2.1 关系运算符说明#xff1a; ,,,,,! #xff08;都是双目的#xff09;所有关系运算符都是双目运算符#xff08;二元运算符#xff09;#xff0c;运算符左侧和右侧、可…一、内容概要内容提neirong关系运算符 逻辑运算符 逗号运算符 位运算二、运算符2.1 关系运算符说明 ,,,,,! 都是双目的所有关系运算符都是双目运算符二元运算符运算符左侧和右侧、可以是变量、常量字面量是指直接在代码中写出的 “值本身、符号常量、使用const 修饰的变量、还可以是表达式、举例
a b; // 变量
5 6; // 常量
abc; // 表达式关系运算符的结果是布尔类型、C语言中实际上没有布尔类型、我们用整型的 0 和 非 0 来表示成立真或者不成立假。
int a 5, b 4;
printf(%d,%d\n, a b, a b 10);// 1,0 注意计算机给我们返回的真-1假-0C99标准引入 stdbool.h 本质上是对0和1进行了封装。其实很简单就是定义了两个符号常量
#define true 1
#define false 0浮点型比较需要用插值法fabsa - b 1e -6。使用fabs取绝对值函数、需要引入math,h在C语言中为什么浮点型不用 符号做等判断请看下面例子
#include stdio.hint main(int argc,char *argv[])
{float a 1.1f 1.2f; // a 预测结果2.3ffloat b 2.3f; // b 预测结果2.3fprintf(1.1f 1.2f %.20f\n,a); // %.20f 意思是保留小数点后20位printf( 2.3f %.20f\n,b);double a1 1.1 * 2;printf(%d\n,a1 2.2);return 0;
}操作正确方式错误方式浮点数相等比较使用误差范围fabs(a - b) epsilonepsilon表示 “误差容忍度”例如 1e-6 即 0.0000011e-9 即 0.000000001ab浮点数大小比较直接使用 或 误差不影响顺序 -零比较fabs(a) epsilon a 0.02.2 逻辑运算符运算的结果为布尔值 、要么为 真-非0 要么为 假1! 非逻辑非单目运算符并且只能在操作数的左侧非真即为假非假即为真。取反 对一个数或者表达式取非奇数次结果与原值相反如 !(a % 2 ! 0) 是1次取非结果 a%20 对一个数或者表达式取非偶数次结果与原值相同如 !!(a % 2 0) 是2次取非结果 a%20 2 与逻辑与双目运算符当左右两侧的数据都为真时最终的结果才为真有假则为假
当逻辑与运算时左侧为假右侧结果不会影响最终结果右侧根本不会执行最终的结果就是左侧的结果假这种现象称之为短路效果短路与这是C语言中提供的一种惰性计算就是为了减少运算次数。
// 需求要求成绩在0~100以内
int score 90;
printf(%d\n, score 0 score 100); // 1
注意 避免链式调用如 0 score 100 应改为逻辑与 score 0 score 100 在C语言中上面的链式写法并不会编译报错为什么不能用链式调用请看下面例 子
int score1 45, score2 -65, score3 110;
// 预测0 45 100 结果为1
printf(%d\n,0 score1 100);//实际结果0 score1 返回11100返回1最终结果1成立
// 预测0 -65 100 结果为0
printf(%d\n,0 score2 100);//实际结果0 score2 返回00100返回1最终结果1不成立
// 预测0 110 100 结果为0
printf(%d\n,0 score3 100);//实际结果0 score3 返回11100返回1最终结果1不成立经过以上测试我们发现链式比较语法上没问题可以通过编译但是逻辑上有问题所以不能用作条件判断。
3|| 或逻辑或双目运算符当左右测数据都为假时最终的结果才为假有真则为真 当逻辑或运算时左侧为真右侧结果不会影响最终结果右侧根本不会执行最终的结果就是左侧的结果真这种现象称之为短路效果短路或这是C语言中提供的一种惰性计算就是为了减少运算次数。
// 需求闰年计算公式
int year 2025;
printf(%d\n, ((year % 4 0 year % 100 ! 0) || year % 400 0));2.3 逗号运算符作用 将若干个表达式 “串联起来” 如a 4,a 3;别称顺序求值运算符2.3.1 逗号表达式语
表达式 1表达式 2... 表达式n;求解过程按从左到右的顺序分别计算各个表达式的值其中最后一个表达式 n 的值就是整个逗号表达式的值。案例
#include stdio.h
int main()
{int a 0, b 0; // 这不是逗号表达式这里称作逗号分隔符。// 逗号表达式int result (a 3, b 5, a b);// 8 整体是赋值表达式右侧是逗号表达式// 怎么判断一个表达式是逗号表达式还是赋值表达式要看它最终的运算是赋值操作还是逗号操作// 结合条件判断int x 10, y 20;int max (x, y, (x y) ? x : y);// x10, y20, max 21printf(result%d, max%d\n, result, max);// result8, max21return 0;
}2.4 位运算说明 按位bit来进行运算操作的运算符更多时候用于定制化应用开发和嵌入式开发。语法 ~、、|、、~按位取反
说明单目运算符数据的每一个bit位按位取反也就是二进制数据位上0变1,1变0 演示 举例
printf(%d\n,~5);按位与说明双目运算符对于运算符左右的两个数对应的二进制位数据都为1时结果为1、否则为0 演示 举例
printf(%d\n, 5 6); // 4| 按位或 说明双目运算符对于运算符左右的两个数据对应的二进制位数据有一个为1结果为1否则为0 演示 举例
printf(%d\n,5 | 6);// 7^按位异或 说明双目运算符对于运算符左右的两个数据对应二进制位数据相同结果为0不同为1 演示 举例
printf(%d\n,5 ^ 6);// 3