网站开发自学,郑州同济医院口碑怎样,平面设计属于什么专业,企业档案网站建设文章目录 参考描述算术运算符除法运算取模运算复合赋值运算符自增运算符自减运算符 比较运算符逻辑运算符概念短路为什么需要短路机制#xff1f; 参考
项目描述微软C 语言文档搜索引擎Bing、GoogleAI 大模型文心一言、通义千问、讯飞星火认知大模型、ChatGPTC Primer Plus 参考
项目描述微软C 语言文档搜索引擎Bing、GoogleAI 大模型文心一言、通义千问、讯飞星火认知大模型、ChatGPTC Primer Plus 第六版中文版史蒂芬·普拉达 / 张海龙袁国忠 译精通C第九版ISBN9787302503163黑马程序员CCPlusPlusReference
描述
项目描述操作系统Windows 10 专业版编辑器VSCode编译器g.exe (x86_64-win32-seh-rev1, Built by MinGW-Builds project) 13.1.0
算术运算符
C 作为编程语言提供了各种运算符这其中包含了算术运算符。算术运算符在编程语言中 用于执行各种数学运算操作。在 C 中有如下常用的算术运算符
项目描述正号、加法运算符-负号、减法运算符*乘法运算符/除法运算符%取模(取余)运算符自增运算符-\-自减运算符
除法运算
在 C 中使用除法运算符进行除法运算时除法运算符的行为将因操作数参与运算的数据的不同而不同具体如下
若两个操作数 均为整数则除法运算的结果将为 整数。若两个操作数中 存在浮点数则除法运算的结果将为 浮点数。
举个栗子
#include iostream
using namespace std;int main() {cout 5 / 3 endl;cout 5.0 / 3 endl;cout 5.0 / 3.0 endl;system(pause);return 0;
}执行结果
1
1.66667
1.66667
请按任意键继续. . .注 除法操作符作用的两个操作数若为整数时除法运算的结果将为整数。该 整数并不是由实际计算结果四舍五入后得来的而是直接去除小数点及小数部分 后所剩余的部分 。 在表达式中除数不能为零。否则C 将为此抛出异常。
取模运算
取模运算与除法运算的区别在于除法运算的结果值为 两数相除的结果而取模运算的结果值为 两数相除所得到的余数。
举个栗子
#include iostream
using namespace std;int main() {cout 5 % 3 endl;cout 0 % 9 endl;cout 36 % 6 endl;system(pause);return 0;
}执行结果
2
0
0
请按任意键继续. . .注 取模运算符的操作数不可为浮点数仅能为整数。否则C 将为此抛出异常。 取模运算符的操作数中若存在负数则结果值的正负性满足如下规则 就 A % B 而言取模运算的结果值的正负性与操作数 A 相同。
举个栗子
#include iostream
using namespace std;int main() {cout -5 % 3 endl;cout 8 % -20 endl;cout -3 % -3 endl;cout -2 % -3 endl;system(pause);return 0;
}执行结果
对于 C 来说-0 与 0 是相同的。故 -3 % -3 的输出结果为 0。
-2
8
0
-2
请按任意键继续. . .复合赋值运算符
在 C 中、- 等运算符被称为复合赋值运算符Compound Assignment Operators。复合赋值运算符 结合了算术运算符与赋值运算符的功能可以用来简化对变量值的修改操作。
C 所支持的常用复合赋值运算符
赋值运算符功能示例等效于加法赋值运算符将右侧的值加到左侧的变量上a b;a a b;-减法赋值运算符从左侧的变量中减去右侧的值a - b;a a - b;*乘法赋值运算符将左侧的变量与右侧的值相乘a * b;a a * b;/除法赋值运算符将左侧的变量除以右侧的值a / b;a a / b;%取模赋值运算符将左侧的变量取模右侧的值a % b;a a % b;
举个栗子
#include iostream
using namespace std;int main() {int a 97, b 98, c 99;a 9;b % 7;c / 33;cout 97 9 a endl;cout 98 % 7 b endl;cout 99 / 33 c endl;system(pause);return 0;
}执行效果
97 9 106
98 % 7 0
99 / 33 3
请按任意键继续. . .自增运算符
使用自增运算符可以将类似 a a 1 的语句简化为 a 或 a。其中a 中的 被称为后置自增运算符a 中的 被称为前置自增运算符。 前置自增与后置自增的区别在于两者所作用的操作数自增的时机不同。前置自增运算过程中操作数的自增时机 在包含自增语句的表达式执行完毕前完成自增而后置自增运算过程总操作数的自增时机则 在包含自增语句的表达式执行完毕后完成自增。对此请参考如下示例
举个栗子
#include iostream
using namespace std;int main() {int num 3;// 3 * 6 3 * 6 36cout 3 * 6 num * 6 endl;num 3;// 3 * 6 4 * 6 42cout 3 * 6 num * 6 endl;system(pause);return 0;
}执行结果
36
42
请按任意键继续. . .自减运算符
自减运算符与自增运算符的类似只是自增运算符最终将实现操作数的 自增而自减运算符最终将实现操作数的 自减。
比较运算符
比较运算符作用于两个操作数运算结果为布尔值。C 支持如下比较运算符
项目描述判断两个操作数是否相等若两者相等则运算结果为 true否则为 false 。!判断两个操作数是否不相等若两者不相等则运算结果为 true否则为 false 。判断左操作数是否大于右操作数若是则运算结果为 true否则为 false。判断左操作数是否小于右操作数若是则运算结果为 true否则为 false。判断左操作数是否大于或等于右操作数若是则运算结果为 true否则为 false。判断左操作数是否小于或等于右操作数若是则运算结果为 true否则为 false。
举个栗子
#include iostream
using namespace std;int main() {cout (3 6) endl;cout (6 6) endl;cout (3 3) endl;system(pause);
}执行结果
0
1
0
请按任意键继续. . .逻辑运算符
概念
C 中的逻辑运算符是用于执行逻辑运算的特殊运算符逻辑运算符操作 布尔值true 或 false 或 布尔表达式能够产生布尔值的表达式含有逻辑运算符的表达式也是布尔表达式以产生布尔结果。逻辑运算符主要用于 控制流程 和 条件测试。
C 中存在三种逻辑运算符具体如下
逻辑运算符描述称呼别称!操作数将被隐式转换为 Bool 类型。 如果转换结果为 false则运算结果为 true反之结果为 false。逻辑非操作数将被隐式转换为 Bool 类型。如果两个操作数的转换结果均为 true则运算结果为 true否则为 false。逻辑与短路与||操作数将被隐式转换为 Bool 类型。如果两个操作数的转换结果中存在 true则运算结果为 true否则为 false。逻辑或短路或
举个栗子
由于运算符之间存在 优先级关系没有考虑到不同运算符之间的优先级可能会导致异常的产生。由于 运算符的优先级高于大部分逻辑运算符故在下述示例中需要 使用括号将逻辑运算表达式括起以提高被包裹表达式的优先级使得程序能够正常运行。
#include iostream
using namespace std;int main() {cout !true endl;cout (true false) endl;cout (true true) endl;cout (666 || 0) endl;system(pause);return 0;
}执行结果
0
0
1
1
请按任意键继续. . .注
在 C 中所有的非零值转换为布尔值的结果均为 true零转换为布尔值的结果为 false 。
短路
逻辑与运算符仅当前一个操作数的转换结果为 true 时才会计算后一个个操作数。 逻辑或运算符仅当前一个操作数的转换结果为 false 时才会计算后一个操作数。
逻辑与运算符的第前一个操作数的转换结果为 false 以及逻辑或运算符的前一个操作数为 true 时都将发生 短路即后一个操作数不会被计算。
举个栗子
#include iostream
using namespace std;int main() {int num 1;cout (true || num) endl;cout num endl;cout (false num) endl;cout num endl;system(pause);return 0;
}执行结果
在上述代码执行过程中变量 num 被初始化为 1 后保存的值未曾发生过改变。原因是逻辑运算过程中发生了短路num 均未被执行。
1
1
0
1
请按任意键继续. . .为什么需要短路机制
短路机制 有助于提高程序的效率在某些情况下可以防止出现不必要的计算尤其是当条件表达式包含了复杂的计算或者函数调用时。但要注意短路机制可能导致部分表达式 永远不被执行这 可能会脱离程序的设计初衷。因此在设计逻辑运算的过程中需要 仔细考虑条件表达式的逻辑和代码执行的顺序以确保程序按照开发者的意愿运行。