青岛网站建设信息公示,上海免费网站建设品牌,如何设计网站以网络为中心的企业文化,怎么查看网站开发语言的类型在本文中#xff0c;我们将借助示例学习C 中不同类型的运算符。 在编程中#xff0c;运算符是对值或变量进行运算的符号。例如#xff0c;是用于加法的运算符#xff0c;而 - 是用于减法的运算符。
C 中的运算符可以分为六种类型#xff1a; 算术运算符 赋值运算符 关系… 在本文中我们将借助示例学习C 中不同类型的运算符。 在编程中运算符是对值或变量进行运算的符号。例如是用于加法的运算符而 - 是用于减法的运算符。
C 中的运算符可以分为六种类型 算术运算符 赋值运算符 关系运算符 逻辑运算符 按位运算符 其他运算符
1. C 算术运算符
算术运算符用于对变量和数据执行算术运算。例如
a b; 在此运算符用于将两个变量a和b相加。同样C 中还有其他各种算术运算符。假设变量 A 的值为 10变量 B 的值为 20则
运算符描述实例把两个操作数相加A B 将得到 30-从第一个操作数中减去第二个操作数A - B 将得到 -10*把两个操作数相乘A * B 将得到 200/分子除以分母B / A 将得到 2%取模运算符整除后的余数B % A 将得到 0自增运算符整数值增加 1A 将得到 11--自减运算符整数值减少 1A-- 将得到 9
示例1算术运算符
#includeiostream
int main() {int a, b;a 2;b 4;// 打印a和b的和std::cout ab a b std::endl; // 6// 打印a和b的差std::cout a-b a - b std::endl; // -2// 打印a和b的乘积std::cout a*b a * b std::endl; // 8// 打印a除以bstd::cout a/b a / b std::endl; // a,b均为int类型a/b也为int型故a/b0// 打印a和b的模余数std::cout a%b a % b std::endl; // 2return 0;
}
/ 除法运算符
注意我们上述程序中的操作a / b。 / 运算符是除法运算符。 从上面的示例可以看到如果一个整数除以另一个整数我们将得到商。但是如果除数或被除数是浮点数我们将以小数形式得到结果。如下例所示。
#includeiostream
#includetypeinfo
int main() {int b;float a;a 2.0;b 4;//如果除数或被除数是浮点数我们将以小数形式得到结果。std::cout a/b a/b std::endl; // a/b0.5std::cout a的数据类型为 typeid(a).name() std::endl;//a的数据类型为float}
在C中,7/2 3
7.0 / 2 3.5
7 / 2.0 3.5
7.0 / 2.0 3.5 模运算符
模运算符 % 计算余数。当a (9)除以b(4)余数为1。
注意%操作只能与整数使用。
自增和自减运算符
C 还分别提供了递增和递减运算符和--。
将操作数的值增加1。
-- 将操作数的值减少1。
例如
int num 5;// num增加1
num;
这里num的值从初始值5增加到6。
#includeiostream
int main() {int num 5;num; // num自增num; // num自增std::cout num的取值为 num std::endl; // 输出7}在上面的程序中我们使用和-运算符作为前缀。 我们还可以将这些运算符用作后缀。这些运算符用作前缀与用作后缀时略有不同。详细请参考下面这篇博文
自增自减运算符i与i的区别-CSDN博客
2. C 赋值运算符
在C 中赋值运算符用于将值赋给变量。例如
// 将5赋值给a
a 5;
这里我们给变量a赋了一个值5。
运算符实例等同a b;a b;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;
3. C 关系运算符
关系运算符用于检查两个操作数之间的关系。例如
// 检查a是否大于b
a b;
在这里是一个关系运算符。它检查是否a大于b。
如果该关系为true则返回1如果该关系为false则返回0。
假设变量 A 的值为 5变量 B 的值为 11则
运算符描述实例检查两个操作数的值是否相等如果相等则条件为真。(A B) 不为真。!检查两个操作数的值是否相等如果不相等则条件为真。(A ! B) 为真。检查左操作数的值是否大于右操作数的值如果是则条件为真。(A B) 不为真。检查左操作数的值是否小于右操作数的值如果是则条件为真。(A B) 为真。检查左操作数的值是否大于或等于右操作数的值如果是则条件为真。(A B) 不为真。检查左操作数的值是否小于或等于右操作数的值如果是则条件为真。(A B) 为真。 4. C 逻辑运算符
逻辑运算符用于检查表达式是true还是false。如果表达式为true则返回1如果表达式为false则返回0。
p假设变量 A 的值为 1变量 B 的值为 0则
运算符描述实例称为逻辑与运算符。如果两个操作数都非零则条件为真。(A B) 为假。||称为逻辑或运算符。如果两个操作数中有任意一个非零则条件为真。(A || B) 为真。!称为逻辑非运算符。用来逆转操作数的逻辑状态。如果条件为真则逻辑非运算符将使其为假。!(A B) 为真。
例如
假设,
a 5
b 8假如,(a 3) (b 5) 计算结果为 true
(a 3) (b 5) 计算结果为 false(a 3) || (b 5) 计算结果为 true
(a 3) || (b 5) 计算结果为 true
(a 3) || (b 5) 计算结果为 false!(a 3) 计算结果为 true
!(a 3) 计算结果为 false 5. C 按位运算符
在C 中按位运算符用于对单个位执行操作。 它们只能与char和int数据类型一起使用。
下表显示了 C 支持的位运算符。假设变量 A 的值为 600011 1100变量 B 的值为 130000 1101则
运算符描述实例如果同时存在于两个操作数中二进制 AND 运算符复制一位到结果中。(A B) 将得到 12即为 0000 1100|如果存在于任一操作数中二进制 OR 运算符复制一位到结果中。(A | B) 将得到 61即为 0011 1101^如果存在于其中一个操作数中但不同时存在于两个操作数中二进制异或运算符复制一位到结果中。(A ^ B) 将得到 49即为 0011 0001~二进制补码运算符是一元运算符具有翻转位效果即0变成11变成0。(~A ) 将得到 -61即为 1100 0011一个有符号二进制数的补码形式。二进制左移运算符。左操作数的值向左移动右操作数指定的位数。A 2 将得到 240即为 1111 0000二进制右移运算符。左操作数的值向右移动右操作数指定的位数。A 2 将得到 15即为 0000 1111 杂项运算符
下表列出了 C 支持的其他一些重要的运算符。
运算符描述sizeofsizeof 运算符返回变量的大小。例如sizeof(a) 将返回 4其中 a 是整数。Condition ? X : Y条件运算符。如果 Condition 为真 ? 则值为 X : 否则值为 Y。,逗号运算符会顺序执行一系列运算。整个逗号表达式的值是以逗号分隔的列表中的最后一个表达式的值。.点和 -箭头成员运算符用于引用类、结构和共用体的成员。Cast强制转换运算符把一种数据类型转换为另一种数据类型。例如int(2.2000) 将返回 2。指针运算符 返回变量的地址。例如 a; 将给出变量的实际地址。*指针运算符 * 指向一个变量。例如*var; 将指向变量 var。 C 中的运算符优先级 运算符的优先级确定表达式中项的组合。这会影响到一个表达式如何计算。某些运算符比其他运算符有更高的优先级例如乘除运算符具有比加减运算符更高的优先级。 例如 x 7 3 * 2在这里x 被赋值为 13而不是 20因为运算符 * 具有比 更高的优先级所以首先计算乘法 3*2然后再加上 7。 下表将按运算符优先级从高到低列出各个运算符具有较高优先级的运算符出现在表格的上面具有较低优先级的运算符出现在表格的下面。在表达式中较高优先级的运算符会优先被计算。
类别 运算符 结合性 后缀 () [] - . - - 从左到右 一元 - ! ~ - - (type)* sizeof 从右到左 乘除 * / % 从左到右 加减 - 从左到右 移位 从左到右 关系 从左到右 相等 ! 从左到右 位与 AND 从左到右 位异或 XOR ^ 从左到右 位或 OR | 从左到右 逻辑与 AND 从左到右 逻辑或 OR || 从左到右 条件 ?: 从右到左 赋值 - * / % ^ | 从右到左 逗号 , 从左到右
示例运算符优先级
#includeiostreamint main(){int num1, num2, num3;num1 5 - 2 * 6;num2 5 - (2 * 6);num3 (5 - 2) * 6;std::cout num1为 num1 std::endl; // num1为-7std::cout num2为 num2 std::endl; // num2为-7std::cout num3为 num3 std::endl; // num3为18return 0;
}