C语言之操作符1

简介: C语言之操作符1

       在表达式中,常常使用到各种操作符(也被称为运算符)。在这里详细讲解算术操作符,赋值操作符,单目操作符。关系操作符、条件操作符、逻辑操作符会在后期讲解。

一.算术操作符:+、-、*、/、%

       +、-、*、/、%这些操作符都是双目操作符。

       双目操作符:有两个操作数,位于操作符的两端。

如:

int a=4 + 3;

//4和3就是操作数,+就是操作符

//因此+也叫双目操作符

1.1+、-

       +、-用来完成加法和减法。

#include<stdio.h>
int main()
{
  int x = 4 + 22;
  int y = 61 - 3;
  printf("%d\n", x);//26
  printf("%d\n", y);//58
  return 0;
}

1.2 *

       运算符*用来完成乘法。

#include<stdio.h>
int main()
{
  int num = 5;
  printf("%d\n", num * num);//25
  return 0;
}

1.3 /

       运算符/ 用来完成除法。

       除号两端如果是整数,执行的是整数除法,得到的也是整数的商。

#include<stdio.h>
int main()
{
  float x = 6 / 4;
  int y = 6 / 4;
  printf("%f\n", x);//输出1.000000
  printf("%d\n", y);//输出1
  printf("%f\n", y);//输出0.000000
  return 0;
}

运行结果:

第二个和第三个输出不一样,是因为它们占位符不同,变量y是整型,而第三个占位符是浮点型,因此占位符类型应与变量类型一一对应 。

上述示例中,尽管变量x的类型是float(浮点数),但是 6/4得到的结果是 1.0 ,而不是1.5。原因在于C语言里面的整数除法是整除,只会返回整数部分,丢失小数部分

       如果希望得到浮点数结果,两个运算符必须至少有一个浮点数,这时C语言就会进行浮点数除法。如:

#include<stdio.h>
int main()
{
  float x = 6.0 / 4;
  int y = 6 / 4;
  printf("%f\n", x);//输出1.500000
  return 0;
}

例子2:

对比上述两个代码,只有20那里不同。

20.0表示进行浮点数除法,score/20.0得到0.250000,0.250000乘100得到25.000000,又由于score是int类型,结果会截断,留下整数部分。

而20进行整数除法,score/5得到整数值0,0乘100等于0

1.4 %

       运算符%表示求模运算,即返回两个整数相除的余值。这个运算符只能用于整数,不能用于浮点数

int x = 6 % 4; //2

负数求模的规则是,结果的正负号由第一个运算数的正负号决定。

printf("%d\n", 11 % -5);//1

printf("%d\n" , -11 % 5);//-1

printf("%d\n", -11 % -5);//-1

上面示例中,第一个运算数的正负号(11或-11)决定了结果的正负号。

二.赋值操作符:=和复合赋值

       在变量创建的时候给一个初始值叫初始化,在变量创建好后,再给一个值,这叫赋值

int a = 100;//初始化

a = 200;//赋值,这里使用的就是赋值操作符

赋值操作符=是一个随时可以给变量赋值的操作符。(赋值表达式:https://blog.csdn.net/wait___wait/article/details/135331063

2.1连续赋值

赋值操作符也可以连续赋值,如

int a = 3;

int b = 5;

int c = 0;

c = b = a  + 3;//连续赋值,从右向左依次赋值

但这种代码写出来,吧容易理解,建议拆开写,便于观察代码的执行细节。

2.2复合赋值+=、-=

        在写代码时,经常可能对一个数进行自增或自减,如:

int a = 10;

a += 3;//a = a + 3

a -= 2;//a = a - 2

三.单目操作符:++、--、+、-

       前面介绍了双目操作符有两个操作数,而单目操作数只有1个操作数。

3.1 ++和--

       ++是一种自增操作符,又分为前置++和后置++, --是一种自增操作符,也分为前置--和后置--。

3.1.1前置++

       计算口诀:先+1,后使用;

int a = 10;

int b = ++a;//++的操作数是a。放在a前面就是前置++

printf("%d %d", a, b);//11 11

a原来是10,先加1,后a变成11,再使用就是赋值给b,b得到的也是11,最终a和b都是11。

再来一个示例,帮助理解 :

int a = 10;

printf("%d\n",a++);//10,先使用a的值,打印10后,a再加1

printf("%d" ,a);//11

3.1.2后置++

       计算口诀:先使用,后+1;

int a = 1 0;

int b = a++;

printf("%d %d", a, b);//11 10

a原来是10,先使用,就是先赋值给b,b得到了10,然后a再加1,变成11。

3.1.3前置--

       ++和-- 的道理是一样的,只是把+1换成了-1;

       计算口诀:先-1,后使用

int a = 10;

int b = --a;

printf("%d %d", a,b);//9 9

3.1.4后置--

       同理后置--类似于后置++,只是把加1换成了减1

       计算口诀:先使用,后-1

int a = 10;

int b = a--;//表达式形式

printf("%d %d", a, b);//9 10

从上述几个例子可以看出,如果是表达式形式的,不管是前置还是后置,对于操作数本身都是进行了+1或者-1的 。

3.1.5练习

求下面代码的结果 :

#include <stdio.h>
int main()
{
  int a, b, c;
  a = 5;
  c = ++a;
  b = ++c, c++, ++a, a++;//表达逗号式+赋值表达式
  b += a++ + c;
  printf("a = %d b = %d c = %d\n:", a, b, c);
  return 0;
}

答案:a = 9 b= 23 c = 8

答案解析:

++运算符:分为前置++和后置++,

前置++:先加1,后使用,即先使用变量中内容,然后给结果加1

后置++:先使用变量中内容,整个表达式结束时,给变量加1

逗号表达式,取最后一个表达式的值。(逗号表达式:https://blog.csdn.net/wait___wait/article/details/135331063

#include <stdio.h>
int main()
{
  int a, b, c;
  a = 5;
  c = ++a;// ++a:加给a+1,结果为6,用完加之后的结果给c赋值,因此:a = 6  c = 6
  b = ++c, c++, ++a, a++;
   // 逗号表达式的优先级,最低,这里先算b=++c, b得到的是++c后的结果,b是7
   // b=++c 和后边的构成逗号表达式,依次从左向右计算的。
   // 表达式结束时,c++和,++a,a++会给a+2,给c加1,此时c:8,a:8,b:7
  b += a++ + c; // a先和c加,结果为16,在加上b的值7,b的结果为23,最后给a加1,a的值为9
  printf("a = %d b = %d c = %d\n:", a, b, c); // a:9, b:23, c:8
  return 0;
}

3.2 +和-

       这里+、-不同于算术操作符,是单目操作符。

运算符+对正负没有影响,是一个完全可以省略的运算符,但是写错了也会报警。

int a = +10;  等价于    int a = 10;

运算符- 用来改变一个值的正负号,负数的前面加上-就会得到正数,正数的前面加上-就会得到负数 。

负数可以有以下途径获取:

#include<stdio.h>
int main()
{
  int a = 10;
  int b = -a;
  int c = -10;
  printf("b=%d c=%d\n", b, c);//b和c都是-10
  printf("a=%d\n", -a);//-10
  return 0;
}

欢迎斧正!!!

后期会不断更新...

期待你的


目录
相关文章
|
14天前
|
存储 网络协议 C语言
【C语言】位操作符详解 - 《开心消消乐》
位操作符用于在位级别上进行操作。C语言提供了一组位操作符,允许你直接操作整数类型的二进制表示。这些操作符可以有效地处理标志、掩码、位字段等低级编程任务。
58 8
|
14天前
|
C语言
【C语言】逻辑操作符详解 - 《真假美猴王 ! 》
C语言中有三种主要的逻辑运算符:逻辑与(`&&`)、逻辑或(`||`)和逻辑非(`!`)。这些运算符用于执行布尔逻辑运算。
55 7
|
4月前
|
存储 C语言 索引
【C语言篇】操作符详解(下篇)
如果某个操作数的类型在上⾯这个列表中排名靠后,那么⾸先要转换为另外⼀个操作数的类型后执⾏运算。
81 0
|
4月前
|
程序员 编译器 C语言
【C语言篇】操作符详解(上篇)
这是合法表达式,不会报错,但是通常达不到想要的结果, 即不是保证变量 j 的值在 i 和 k 之间。因为关系运算符是从左到右计算,所以实际执⾏的是下⾯的表达式。
287 0
|
2月前
|
存储 缓存 C语言
【c语言】简单的算术操作符、输入输出函数
本文介绍了C语言中的算术操作符、赋值操作符、单目操作符以及输入输出函数 `printf` 和 `scanf` 的基本用法。算术操作符包括加、减、乘、除和求余,其中除法和求余运算有特殊规则。赋值操作符用于给变量赋值,并支持复合赋值。单目操作符包括自增自减、正负号和强制类型转换。输入输出函数 `printf` 和 `scanf` 用于格式化输入和输出,支持多种占位符和格式控制。通过示例代码详细解释了这些操作符和函数的使用方法。
45 10
|
2月前
|
存储 编译器 C语言
【C语言】简单介绍进制和操作符
【C语言】简单介绍进制和操作符
176 1
|
2月前
|
存储 编译器 C语言
初识C语言5——操作符详解
初识C语言5——操作符详解
185 0
|
4月前
|
C语言
C语言操作符(补充+面试)
C语言操作符(补充+面试)
46 6
|
4月前
|
存储 编译器 C语言
十一:《初学C语言》— 操作符详解(上)
【8月更文挑战第12天】本篇文章讲解了二进制与非二进制的转换;原码反码和补码;移位操作符及位操作符,并附上多个教学代码及代码练习示例
62 0
十一:《初学C语言》—  操作符详解(上)
|
5月前
|
C语言
五:《初学C语言》— 操作符
本篇文章主要讲解了关系操作符和逻辑操作符并附上了多个代码示例
45 1
五:《初学C语言》—  操作符