C语言:五、运算符

本文详细介绍了C语言中的各种运算符,包括括号运算符、数组运算符、逻辑运算符、自增自减运算符、位运算符等,并通过实例展示了它们的用法。还探讨了运算符的优先级和逻辑运算的短路特性,帮助读者深入理解C语言的运算规则。
摘要由CSDN通过智能技术生成


运算符

运算符含义

  • () 小括号:计算,函数,提升优先级
  • [] 中括号:数组——长度,下标
#include<stdio.h>

int main()
{
   int i;
   int arr[10];
   for(i=0; i<10; i++)
   {
      arr[i]=0;
      printf("%d\n",i);
  
   return 0;
}
  • -> 指向符:结构体成员
  • . 点:结构体成员
#include<stdio.h>

struct Student
{
  char name[10];
  int age;
}

int main()
{
  struct Student stu1={"liubei",30};
  stu1.age = 45;
 
  return 0;
}

逻辑运算符

  • ! 逻辑非:

a=10
! a=0
!! a=1

  • && 逻辑与:

(语句1&&语句2)两个都为真,结果才为真
1&&2——1为假,即为假,2不运算

  • || 逻辑或:

(语句1||语句2)有一个为真,则结果为真
1||2——1为真,即为真,2不运算

自增运算符

  • i++ 前置加加:先赋值后+1
    ++i 后置加加:先+1后赋值
#include<stdiio.h>

int main()
{
    int i = 10;
	int j= ++i;
	printf("%d, %d\n", i, j);//输出11,11
	
	int i = 10;
	int j= i++;
	printf("%d, %d\n", i, j);//输出11,10

    return 0; 
}	

自减运算符

  • i- - 前置减减:先赋值后-1
    - -i 后置减减:先-1后赋值
#include<stdiio.h>

int main()
{
	int i = 10;
	int j= --i;
	printf("%d, %d\n", i, j);//输出9,9
	
	int i = 10;
	int j= i--;
	printf("%d, %d\n", i, j);//输出9,10
	
    return 0; 
}	
#include<stdiio.h>

int main()
{
   int a = 1;
   int b = 0;
   int c = 0;
   if(a++ && b++ && c++)//只执行a++和b++
   {
      printf("ture\n");
   }
   else
   {
      printf("false\n");
   }
   printf("%d, %d, %d\n",a,b,c);//false,2,1,0
 
   return 0; 
}
#include<stdiio.h>

int main()
{
   int a = 1;
   int b = 0;
   int c = 0;
   if(a++ || b++ || c++)//只执行a++
   {
      printf("ture\n");
   }
   else
   {
      printf("false\n");
   }
   printf("%d, %d, %d\n",a,b,c);//ture,2,0,0
 
   return 0; 
}

位运算符

11: 0000 1011
13: 0000 1101

  • ~ 按位取反

11 :0000 1011
~11:1111 0100

  • & 按位与
    相同位都为1才为1,其余都为0

11&13: 0000 1001

  • | 按位或
    相同位有一个1就为1

11|13: 0000 1111

  • ^ 按位异或
    相同位不同就为1,否则为0

11^13: 0000 0110

  • << 按位左移

11<<1: 000 10110=11 * 21=22
11<<2: 00 101100=11 * 22=44
右边统一补0

  • >> 按位右移
    左边补符号位(0正1负),无符号补0

11>>1: 00000 101=11/2=5(整数)
11>>1: 000000 10=11/4=2


-1>>1: 1111 1111= -1
255>>1: 0111 1111 = 127
(-1: 0000 0001—1111 1110—1111 1111)

  • * 指针运算符

int *p = &a取址
*p =20解引用,间接访问

  • 类型转换运算符:(类型标识符int/char…)
#include<stdio.h>

int main()
{
  char a = 10;
  char b = (char)200;//1100 1000,减1得到补码1100 0111,补码取反0011 1000,即为-56
                     //char:-128~127,200-256=-56
  printf("%d\n",b);//-56

  int c  = (int)12.4;
  printf("%d\n",c);//12
  
  return 0}
  • sizeof 长度运算符:取占内存大小运算符(字节)

  • * / % : 乘 除 取余

#include<stdio.h>

int main()
{
  float b = 5/2;//2.0
  float c = (float)5/2;//5.0/2=2.5
  float d = (float)(5/2);//2.0
  float e = 5/(float)2;//5/2.0=2.5
  printf("%f, %f, %f, %f\n",b,c,d,e);

  return 0}
  • < > <= >=  双目运算符
#include<stdio.h>

int main()
{
  int a = 5;
  if(10<a<20)//10<5为假=0,0<20为真
  {
    printf("真\n");//真
  }
  else
  {
    printf("假\n");
  }
  
  return 0}
  •  = =  等于号
  •   !=  不等号
  • ? : 条件运算符,三目运算符

语句1 ? 语句2 : 语句3
如果语句1为真,则执行语句2;如果语句1为假,则执行语句3。


a>b ? a : b——a>b,真返回a,假返回b

  •  =  赋值运算符
  • 复合赋值运算符

+=, a+=10 , a=a+10
-=, *=, /=, %=, &=, ^=, |=, <<=, >>=

  • , 逗号运算符,顺序求值运算

次方的表示

1.25*101 = 1.25e1
pow(x,y)=x的y次方,需要头文件#include<math.h>


运算符优先级

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值