C语言之运算符

简介: C语言之运算符

C语言运算符

文末附运算符的优先表和ASCII表


一、算术运算符


加(+)减(—)乘(*)除(/)

模(余)运算符(%):不允许出现浮点型,余数正负取决于被除数正负

#include <stdio.h>
int main() {
    int i, b, a, c;
    i= 4, b=3;
    a= i+b;
    c= i*a;
    float p, k;
    p= i/b;
    k= i%a;
    printf("a=%d,c=%d,p=%f,k=%f\n",a,c,p,k);
    return 0;
}

自增(++i,–i;i++,i–)

#include <stdio.h>
int main() 
{
    int i;
    i= 4;
    printf("%d\n",++i);
    return 0;
}
#include <stdio.h>
int main() 
{
    int i;
    i= 4;
    printf("%d\n",i--);
    //printf("%d\n",i); 
    return 0;
}


二、关系运算符


大于(>)小于(<)等于(==)

#include <stdio.h>
int main()
 {
    int a, b, max;
    printf ("please enter a and b\n");
    scanf ("%d %d",&a, &b);
    if (a>b) max=a;
    if (a<b) max=b;
    if (a==b) max=a;
    printf ("max=%d\n",max);
    return 0;
}

小于或等于(<=)大于或等于(>=)不等于(!=)赋值(-=、+=、*=);

#include<stdio.h>
int main()
{
    int a = 10;
    a +=a *=a -=20;
    printf("%d\n",a);
}
#include <stdio.h>
int main() 
{
    int a, b, max;
    printf ("please enter a and b\n");
    scanf ("%d %d",&a, &b);
    if (a>=b) max=a;
    if (a<=b) max=b;
    printf ("max=%d\n",max);
    return 0;
}
#include <stdio.h>
int main() 
{
    int a, b, max;
    printf ("please enter a and b\n");
    scanf ("%d %d",&a, &b);
    if (a!=b);
    if (a>b) max=a;
    if (a<b) max=b;
    printf ("max=%d\n",max);
    return 0;
}


三、逻辑运算符(并且、或者、除非)

优先级从上至下


逻辑非

#include <stdio.h>
int main() 
{
    int num = 0;
    printf ("Please enter num value: ");
    scanf("%d", &num);
    if (num != 69) 
    {
       printf ("num %d is not equal to 69.\n", num);
    }
    return 0;
}

逻辑与

#include <stdio.h>
int main() 
{
    int a, b, x, y;
    printf ("please enter a and b,x and y\n");
    scanf ("a=%d,b=%d,x=%d,y=%d",&a, &b, &x, &y);
    if (a==b && x==y)
    {
    printf ("a=b,x=y\n");
    }
    else
    printf ("sorry,I donot konw.\n");
    return 0;
}


逻辑或

#include<stdio.h>
int main()
{
    int a = 1;
    int b = 0;
    printf("%d\n",a || (b++));
    printf("%d\n",b);
}
#include<stdio.h>
int main()
{
    int a = 0;
    int b = 0;
    printf("%d\n",a || (b++));
    printf("%d\n",b);
}
#include<stdio.h>
int main()
{
    int a = 0;
    int b = 0;
    printf("%d\n",a || (++b));
    printf("%d\n",b);
}


&&和||的区别

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

优先级:算术运算符>关系运算符>赋值运算符


四、位运算符


右移(>>)左移(<<)

按位与(&)

按位或(|)

按位异或(^)

取反(~)


五、赋值运算符

等号(=)

扩展赋值运算符

+= 加赋值 (a += 3 等价于 a = a + 3)

-= 减赋值

*= 乘赋值

/= 除赋值

%= 求余赋值

&= 按位与赋值

| = 按位或赋值

^= 按位异或赋值

<<= 左移位赋值(>>= 右移位赋值)

<> 当右操作数又是一个赋值表达式时,形成多重赋值表达式


六、条件运算符

条件运算符优先级高于赋值、逗号运算符,低于其他运算符。


关系表达式 ? 表达式1 : 表达式2(当表达式多了后就先从右算到左)

三目运算符:条件 ? 结果1 : 结果2(条件成立时,返回:号前的结果;不成立就返回后面的结果)

//例子:判断a小于或者大于b,输出最大值max
#include <stdio.h>
int main()
{
  int a, b, max;
  scanf("a=%d,b=%d",&a,&b);
  max=a>b?a:b;
  printf("max=%d\n",max);
  return 0;
}
#include<stdio.h>
int main()
{
    int a = 300;
    int b = 50;
    int c = a>b? 350: a<b? 360:370;
    printf("%d\n",c);
    return 0;
}
#include<stdio.h>
int main()
{
    int a = 50;
    int b = 300;
    int c = a>b? (b-a): a<b? (a+b):370;
    printf("%d\n",c);
    return 0;
}


七、逗号运算符


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

八、指针运算符


指针变量

定义:基类型 * 指针变量名;

例子1:通过指针变量访问整型变量

#include <stdio.h>
int main() 
{
    int a, b; #定义两个int变量
    int * pointer_1, * pointer_2; #定义两个指针变量,指向int变量
    a = 100; b = 10;
    pointer_1 = &a; #把变量a的地址赋给指针pointer_1
    pointer_2 = &b;
    printf ("a = %d, b = %d \n", a, b);
    printf (" * pointer_1 = %d, * pointer_2 = %d \n", * pointer_1, * pointer_2); #输出的指针变量所指向的整型变量的值
    return 0;
}

九、求字节数运算符(sizeof)


当sizeof(与数据类型(如int,float,char …等)一起使用时,返回分配给该数据类型的内存量。

#include<stdio.h>
int main()
{
    printf("%d\n",sizeof(char));
    printf("%d\n",sizeof(int));
    printf("%d\n",sizeof(float));
    printf("%d\n", sizeof(double));
    return 0;
}

当sizeof和表达式一起使用的时候,返回表达式的大小

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

 

十、强制类型转换运算符


例1:小数转整数


#include <stdio.h>
int main () 
{
    float f = 8.88;
    int i;
    i = (int) f;
    printf ("f = %f, i = %d \n", f, i);
    return 0;
}

例2:整数转小数


#include <stdio.h>
int main () 
{
    int maxsum = 123;
    printf ("%lf\n", (double) maxsum);
    return 0;
}

十一、成员运算符


成员运算符

间接成员运算符

十二、下标运算符([ ])


运算符的优先级和结合性

372d9da84f3c422e82e060320c58bdbf.png

a874084cdf3247f38165f5d0a677695f.jpeg



相关文章
|
6天前
|
C语言
c语言运算符
C的运算符有以下几种: 算术运算符:+、-、*、/、% 结合方向自左向右 关系运算符:>、<、==、>=、<=、!= 逻辑运算符:!、&&、|| 位运算符<<、>>、~、|、^、& 赋值运算符:=及符号扩展赋值运算符(+=、-=、*=、/=) 条件运算符:? : 逗号运算符:, 指针运算符:*、& 求字节运算符:sizeof 强制类型转换运算符:((类型)) 分量运算符:.、-> 下标运算符:[]
14 4
|
3月前
|
存储 C语言
C语言数据类型、变量和运算符以及printf相关问题
C语言数据类型、变量和运算符以及printf相关问题
|
2月前
|
C语言
C语言判断和运算符联系
在 C 语言中,判断与运算符紧密相关,主要体现在条件表达式的使用上。
194 87
|
2月前
|
安全 C语言
C语言运算符的使用注意点
在C语言中,正确使用运算符能提升代码的可读性和效率。本文介绍了八大注意事项:运算符优先级和结合性影响运算顺序;自增/自减运算符分前缀和后缀形式;逻辑运算符有短路特性;位运算符直接操作二进制位需谨慎;条件运算符简洁但避免复杂嵌套;类型转换避免意外结果;使用括号明确运算顺序。掌握这些要点有助于编写更安全高效的代码。
188 72
|
1月前
|
存储 Java C语言
【一步一步了解Java系列】:了解Java与C语言的运算符的“大同小异”
【一步一步了解Java系列】:了解Java与C语言的运算符的“大同小异”
39 3
|
1月前
|
C语言
C语言条件运算符详解
C语言条件运算符,也称为三元运算符,是一种简化if-else语句的表达式,形式为:条件?表达式1:表达式2。当条件为真时,计算并返回表达式1的值;否则计算并返回表达式2的值。它可用于快速实现简单的条件分支逻辑。
|
2月前
|
安全 C语言
在C语言中,正确使用运算符能提升代码的可读性和效率
在C语言中,运算符的使用需要注意优先级、结合性、自增自减的形式、逻辑运算的短路特性、位运算的类型、条件运算的可读性、类型转换以及使用括号来明确运算顺序。掌握这些注意事项可以帮助编写出更安全和高效的代码。
49 4
|
2月前
|
程序员 C语言
【C语言基础考研向】06运算符与表达式
本文介绍了C语言中的运算符分类、算术运算符及表达式、关系运算符与表达式以及运算符优先级等内容。首先概述了13种运算符类型,接着详细说明了算术运算符的优先级与使用规则,以及关系运算符和表达式的真假值表示,并给出了C语言运算符优先级表。最后附有课后习题帮助巩固理解。
104 10
|
6月前
|
C语言
C语言中的条件运算符和条件表达式详解
C语言中的条件运算符和条件表达式详解
581 0
|
2月前
|
存储 编译器 C语言
【C语言基础考研向】07逻辑运算符与赋值运算符
本文介绍了C语言中的逻辑运算符与逻辑表达式、赋值运算符以及求字节运算符`sizeof`。逻辑运算符包括`!`(逻辑非)、`&&`(逻辑与)和`||`(逻辑或),其优先级规则与数学运算符类似。通过示例展示了如何用这些运算符判断闰年及逻辑非的运算方向。此外,文章还解释了左值与右值的概念及其在赋值运算中的应用,并介绍了复合赋值运算符的使用方法,如加后赋值`+=`和乘后赋值`*=`。最后,通过`sizeof`运算符示例展示了如何获取变量的字节大小。