运算符详解 C语言

发布时间:2026/7/27 8:36:30

运算符详解 C语言 算术操作符、-、*、/、%算术操作符概述C语言中为了方便运算提供了一系列操作符其中有一组操作符叫算术操作符。分别是 - * / %这些操作符都是双目操作符。都是有2个操作数的位于操作符两端的就是它们的操作数这种操作符也叫双目操作符。运算符/用来完成除法。除号的两端如果是整数执行的是整数除法得到的结果也是整数。#include stdio.h int main() { float x 6 / 4; int y 6 / 4; printf(%f\n, x); // 输出 1.000000 printf(%d\n, y); // 输出 1 return 0; }上面示例中尽管变量x的类型是float浮点数但是6 / 4得到的结果是1.0而不是1.5。原因就在于 C 语言里面的整数除法是整除只会返回整数部分丢弃小数部分。如果希望得到浮点数的结果两个运算数必须至少有一个浮点数这时 C 语言就会进行浮点数除法。#include stdio.h int main() { float x 6.0 / 4; // 或者写成 6 / 4.0 printf(%f\n, x); // 输出 1.500000 return 0; }如上两种写法均可上面示例中6.0 / 4表示进行浮点数除法得到的结果就是1.5。运算符%表示求模(余)运算即返回两个整数相除的余值。这个运算符只能用于整数不能用于浮点数。复合赋值符在写代码时我们经常可能对一个数进行自增、自减的操作如下代码int a 10; a a 3; a a - 2;C语言给这种操作提供了更加方便的写法int a 10; a 3; a - 2;C语言中提供了复合赋值符方便我们编写代码这些赋值符有 -* / % | ^和--是一种自增的操作符又分为前置和后置--是一种自减的操作符也分为前置--和后置--。前置int a 10; int b a; //的操作数是a是放在a的前面的就是前置 printf(a%d b%d\n, a , b);计算口诀先1后使用int a 10; int b a; //的操作数是a是放在a的后面的就是后置 printf(a%d b%d\n, a , b);计算口诀先使用后1--如果你听懂了那--是同理的只是把加1换成了减1。移位运算符左移左移规则左边抛弃、右边补0右移操作符右移规则左边用原该值的符号位填充右边丢弃a 10a1,a 10*2^1a2,a 10*2^2......关于带符号整数左移C语言标准规定导致符号位改变的带符号整数的左移操作属于“未定义行为” (Undefined Behavior, UB)。(可能会把1移到符号位上C标准不保证结果一定是那个负数值。编译器可以做任何处理包括产生一个警告、得到预期的负数值、得到一个完全意外的值甚至在某些极端情况下导致程序崩溃。位操作符 位操作符列表 //按位与| //按位或^ //按位异或~ //按位取反对应比特位上 只要有0 那么按位与的结果对应位上就是0000010110000111000001010|对应比特位上 只要有1 那么按位与的结果对应位上就是1^两个一样的数字异或出来是0n^n0,n^0n~包括符号位0变1,1变0~a-(a1)

相关新闻