C语言入门篇--充分理解操作符

编辑: admin 分类: c#语言 发布时间: 2021-12-12 来源:互联网
目录
  • 1.算术操作符
    • 1.1除法运算
    • 1.2取模运算
  • 2.移位操作符
    • 相关知识
      • 1.移位运算是站在二进制角度移位的
      • 2.左移右移,原始变量值不发生变化除非给原始变量赋值
      • 4.C语言中的移位运算符
      • 5.移位分为算术移左移、算术移右移和逻辑左移、逻辑右移
  • 3.位操作符
    • 3.1按位与&
      • 3.2按位或 |
        • 3.3异或 ^
        • 4.赋值操作符
          • 5.单目操作符
            • 5.1 逻辑反操作 !
              • 5.2 负值 - 正值 +
                • 5.3 取地址 &
                  • 5.4 取反 ~
                    • 5.5 前置、后置 ++ - -
                      • 5.6 解引用操作符 *
                        • 5.7 强制类型转换 (类型)
                        • 6.关系操作符
                          • 7.逻辑操作符
                            • 8.条件操作符
                              • 9.逗号表达式
                                • 10.下标引用、函数调用和结构成员

                                  1.算术操作符

                                  + 加
                                  - 减
                                  * 乘
                                  / 除
                                  % 取模

                                  1.1除法运算

                                  除法运算分母不可为零,否则程序会中断报错,所以要在程序中检验分母是否为零。

                                  1.2取模运算

                                  取模即取余数。

                                  2.移位操作符

                                  相关知识

                                  >> 右移
                                  << 左移

                                  1.移位运算是站在二进制角度移位的

                                  eg:

                                  #include <stdio.h>
                                  int main()
                                  {
                                  	int x = 15;
                                  	printf("%d\n", x>>1);
                                  	printf("%d\n", x<<1);
                                  	printf("%d\n", x);
                                  	x = x >> 1;
                                  	printf("%d\n", x);
                                  	return 0;
                                  }
                                  

                                  在这里插入图片描述

                                  2.左移右移,原始变量值不发生变化除非给原始变量赋值

                                  3.整数移位运算不能整除时,只保留整数部分

                                  4.C语言中的移位运算符

                                  (如<<>>)只能用于整型(如intshortlongchar等),不能用于浮点型(如doublefloat

                                  5.移位分为算术移左移、算术移右移和逻辑左移、逻辑右移

                                  算术左移和算术右移主要用来进行有符号数的倍增、减半;

                                  逻辑左移和逻辑右移主要用来进行无符号数的倍增、减半。

                                  3.位操作符

                                  位操作是站在二进制角度进行操作的。

                                  & 按位与
                                  | 按位或
                                  ^ 按位异或

                                  3.1按位与&

                                  eg:

                                  参与按位与的两二进制位数都为真(1)结果为真,否则只要有一个为假(0)结果为假。

                                  #include <stdio.h>
                                  int main()
                                  {
                                  	printf("%d\n", 1 & 1);
                                  	printf("%d\n", 0 & 1);
                                  	printf("%d\n", 1 & 0);
                                  	printf("%d\n", 0 & 0);
                                  	printf("%d\n", 2 & 6);	
                                  	return 0;
                                  }
                                  

                                  在这里插入图片描述

                                  3.2按位或 |

                                  参与按位与的两二进制位数只要有一个为真(1)结果为真,若都为假(0)结果为假。

                                  eg:

                                  #include <stdio.h>
                                  int main()
                                  {
                                  	printf("%d\n", 1 | 1);
                                  	printf("%d\n", 0 | 1);
                                  	printf("%d\n", 1 | 0);
                                  	printf("%d\n", 0 | 0);
                                  	printf("%d\n", 2 | 6);
                                  	return 0;
                                  }
                                  

                                  在这里插入图片描述

                                  3.3异或 ^

                                  参与按位与的两二进制位数相同为假,不同为真。

                                  eg:

                                  #include <stdio.h>
                                  int main()
                                  {
                                  	printf("%d\n", 1 ^ 1);
                                  	printf("%d\n", 0 ^ 1);
                                  	printf("%d\n", 1 ^ 0);
                                  	printf("%d\n", 0 ^ 0);
                                  	printf("%d\n", 2 ^ 6);
                                  	return 0;
                                  }
                                  

                                  在这里插入图片描述

                                  4.赋值操作符

                                  =  +=  -=  *=  /=  &=  ^=  |=  >>=  <<=

                                  #include <stdio.h>
                                  int main()
                                  {
                                  	int x1 = 0;
                                  	x1 = 10;//赋值 从右向左赋值
                                  	printf("%d\n", x1);
                                  	int x2 = 20;
                                  	x2 += 10;//加等 等价于x=x+10; //其他操作符类似
                                  	printf("%d\n", x2);
                                  	return 0;
                                  }
                                  

                                  在这里插入图片描述

                                  5.单目操作符

                                  单目操作符即只有一个操作数的操作符。

                                  !           逻辑反操作
                                  -           负值
                                  +           正值
                                  &           取地址
                                  sizeof      操作数的类型长度(以字节为单位)
                                  ~           对一个数的二进制按位取反
                                  --          前置、后置--
                                  ++          前置、后置++
                                  *           间接访问操作符(解引用操作符)
                                  (类型)       强制类型转换

                                  5.1 逻辑反操作 !

                                  逻辑真–>非0

                                  逻辑假–>0

                                  eg:

                                  #include<stdio.h>
                                  int main()
                                  {
                                  	int flag = 1;
                                  	if (!flag)//(flag==1)条件为真即非零,取反(!)后if条件为假即0
                                  	{
                                  		printf("if条件为真!\n");
                                  	}
                                  	else
                                  	{
                                  		printf("if条件为假!\n");
                                  	}
                                  	return 0;
                                  }
                                  

                                  在这里插入图片描述

                                  5.2 负值 - 正值 +

                                  给数字前带+ -变成对应的正数或负数。

                                  eg:

                                  #include <stdio.h>
                                  #include <windows.h>
                                  int main()
                                  {
                                  	int x1 = 10;
                                  	printf("%d\n", +x1);
                                  	printf("%d\n", -x1);
                                  	int x2 = -10;
                                  	printf("%d\n", +x2);
                                  	printf("%d\n", -x2);
                                  	return 0;
                                  }
                                  

                                  在这里插入图片描述

                                  5.3 取地址 &

                                  每个变量在内存中都有对应的地址。

                                  eg:

                                  #include <stdio.h>
                                  int main()
                                  {
                                  	int x = 10;
                                  	printf("%d\n", x);
                                  	printf("0x%p\n", &x);//%p:以十六进制打印地址;加0x:为了打印出来的是变量所对应的标准地址。
                                  	return 0;
                                  }
                                  

                                  在这里插入图片描述

                                  5.4 取反 ~

                                  对一个数的二进制按位取反。

                                  eg:

                                  #include <stdio.h>
                                  int main()
                                  {
                                  	unsigned x = 1;
                                  	printf("%u\n", x);
                                  	printf("%u\n", ~x);
                                  	return 0;
                                  }
                                  

                                  在这里插入图片描述

                                  5.5 前置、后置 ++ - -

                                  ++i :前置++,先自增再赋值使用。

                                  i++ :后置++,先赋值使用再自增。

                                  (- -同理)

                                  eg:

                                  #include <stdio.h>
                                  int main()
                                  {
                                  	int i = 3;
                                  	int a = i++;
                                  	printf("%d\n", i);
                                  	printf("%d\n", a);
                                  	///
                                  	int j = 10;
                                  	int b = ++j;
                                  	printf("%d\n", j);
                                  	printf("%d\n", b);	
                                  	return 0;
                                  }
                                  

                                  在这里插入图片描述

                                  5.6 解引用操作符 *

                                  eg:关于解引用操作符 的理解以看变量的左值与右值。

                                  #include <windows.h>
                                  int main()
                                  {
                                  	int a = 10;
                                  	int *p = &a;//指针p指向变量a
                                  	int b=*p;//*p即解引用指针p,取出指针p所指地址空间里的值,然后赋给变量b
                                  	printf("%d\n", b);
                                  	return 0;
                                  }
                                  

                                  在这里插入图片描述

                                  5.7 强制类型转换 (类型)

                                  强制类型转换是把变量从一种类型转换为另一种数据类型。

                                  强制类型转换分为隐式转换和显示转换。

                                  eg:

                                  #include <stdio.h>
                                  int main()
                                  {
                                  	int a = 10;
                                  	double b = 3.456;
                                  	a = b;//隐式转换
                                  	printf("%d\n", a);
                                      ///
                                  	int c = 20;
                                  	double d = 5.555;
                                  	c = (int)d;//显式转换
                                  	printf("%d\n", c);	
                                  	return 0;
                                  }
                                  

                                  在这里插入图片描述

                                  6.关系操作符

                                  关系操作符就是用来判断大小关系。

                                  >
                                  >=
                                  <
                                  <=
                                  !=   用于测试“不相等”
                                  ==   用于测试“相等”

                                  7.逻辑操作符

                                  &&     逻辑与
                                  ||     逻辑或

                                  && 两边的表达式都为真,结果为真。

                                  | | 两边的表达式只要有一个为真,结果为真。

                                  注意:

                                  &&和| |的判断规则:

                                  && 若第一个表达式为假,结果为假,则不判断第二个表达式。

                                  | | 若第一个表达式为真,结果为真,则不判断第二个表达式。

                                  8.条件操作符

                                  exp1 ? exp2 : exp3//又称三目操作符,它是唯一有3个操作数的运算符

                                  若表达式exp1为真,则执行exp2;
                                  若表达式exp1为假,则执行exp3;

                                  9.逗号表达式

                                  1.逗号表达式中的每个表达式都会执行。

                                  2.逗号表达式中的结果为最后一个表达式的值。

                                  3.可以用()隔开逗号表达式。

                                  exp1, exp2, exp3, …expN

                                  eg:

                                  #include <stdio.h>
                                  int main()
                                  {
                                  	int a = 10;
                                  	int b = 20;
                                  	int c = 0;
                                  	int d = ((c=a+b), 2, 3, 4, 5, 6, 7);
                                  	printf("c=%d\n", c);
                                  	printf("d=%d\n", d);
                                  	return 0;
                                  }
                                  

                                  在这里插入图片描述

                                  10.下标引用、函数调用和结构成员

                                  [] //中括号操作符,访问要访问元素的内容
                                  () //函数访问操作符,要调用函数就要在函数名后加(),若函数有参数,则把参数填入()
                                  .  //结构体成员运算符,左边必须为实体即变量
                                  -> //结构体指针运算符,左边必须为指针

                                  以上就是C语言入门篇--充分理解操作符的详细内容,更多关于C语言操作符的资料请关注海外IDC网其它相关文章!

                                  【原URL http://www.yidunidc.com/usa.html复制请保留原URL】