成长之路---C语言笔记(运算符与表达式)

简介: 成长之路---C语言笔记(运算符与表达式)

少年读书,如隙中窥月;中年读书,如庭中望月;老年读书,如台上玩月。皆以阅历之深浅,为所得之深浅耳——张潮


C语言运算符


运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。


一.算数运算符


数学中常见的加减乘除在C语言中同样存在:“+",“-”,"*" ,"/"。


注:其中值得注意的是在C语言中如果两个整型相除得到的结果仍为整型(整数)而非浮点型(小数)。


其他的算数运算符还有


1.取模运算符("%"):结果为整除后的余数


2.自增运算符 ("++") : 结果为整数值增加 1


3.自减运算符 ("--") :结果为整数值减少1


注:自增/自减运算符的放置位置也会影响运算结果


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


c39099927cac31b96e85c814a97a6ddc_bfb1d4b16107cb50db7a747c36edaceb.png


以下是算数运算符的运用
#include<stdio.h>
int main()
{
    int a, b,c,d;
    a = 8;b = 2;
    c = a + b;
    printf("%d\n", c);
    c = a - b;
    printf("%d\n", c);
    c = a * b;
    printf("%d\n", c);
    c = a / b;
    printf("%d\n", c);
    c = a % b;
    printf("%d\n", c);
    c = a++;
    printf("%d\n", c);
    c = --b;
    printf("%d\n", c);
    return 0;
}


668b304ef896a2f8f008923502277947_d3f49b72009d45e471e9f1bbeb05e4fc.png


二.关系运算符


在C语言中0为假,一切的非0为真


如同数学中常见的大于小于一般,C语言中同样拥有


小于(">") 大于(“<”) 大于等于(“>=”) 小于等于(“<=”)


其中若运算成立结果即为真反之诺不成立结果即为假


另外的关系运算符还有


1.等于("=="):检查两个操作数的值是否相等,如果相等则条件为真。(与数学中的等于”=“略有不同,在c语言中”=“为赋值运算符有不同的用法)


2.不等于 ("!="):检查两个操作数的值是否相等,如果不相等则条件为真。(与等于相反真为假,假为真)


以下是关系运算符的运用


int main()
{
    int a = 21;
    int b = 10;
    int c;
    if (a == b)
    {
        printf("Line 1 - a 等于 b\n");
    }
    else
    {
        printf("Line 1 - a 不等于 b\n");
    }
    if (a < b)
    {
        printf("Line 2 - a 小于 b\n");
    }
    else
    {
        printf("Line 2 - a 不小于 b\n");
    }
    if (a > b)
    {
        printf("Line 3 - a 大于 b\n");
    }
    else
    {
        printf("Line 3 - a 不大于 b\n");
    }
    /* 改变 a 和 b 的值 */
    a = 5;
    b = 20;
    if (a <= b)
    {
        printf("Line 4 - a 小于或等于 b\n");
    }
    if (b >= a)
    {
        printf("Line 5 - b 大于或等于 a\n");
    }
}



三.逻辑运算符与位运算符


这两种运算符在C语言的使用中算是较难,易弄混的点,于是我就些在一起了


逻辑运算符


1.逻辑与运算符(“&&”):如果两个操作数都非零,则条件为真。


2.逻辑或运算符(“ ||“ ) : 如果两个操作数中有任意一个非零,则条件为真。


3.逻辑非运算符(“ !”) :用来逆转操作数的逻辑状态。如果条件为真则逻辑非运算符将使其为假。


位运算符


1.按位与操作符(“&”):假设如果 A = 60,且 B = 13,现在以二进制格式表示,它们如下所示:


2.按位或运算符( "|" ) :A = 0011 1100 B = 0000 1101


3.异或运算符 ( "^" ) : A&B = 0000 1100 A|B = 0011 1101


4.取反运算符 ( "~" ) : A|B = 0011 1101 A^B = 0011 000


5.二进制左移运算符( "<<" ):


6.二进制右移运算符(">>" ):


注:若运算值为负数需考虑原码,反码,补码的转换


以下是逻辑运算符及位运算符的运用


#include <stdio.h>
int main()
{
   int a = 5;
   int b = 20;
   int c ;
   if ( a && b )
   {
      printf("Line 1 - 条件为真\n" );
   }
   if ( a || b )
   {
      printf("Line 2 - 条件为真\n" );
   }
   /* 改变 a 和 b 的值 */
   a = 0;
   b = 10;
   if ( a && b )
   {
      printf("Line 3 - 条件为真\n" );
   }
   else
   {
      printf("Line 3 - 条件为假\n" );
   }
   if ( !(a && b) )
   {
      printf("Line 4 - 条件为真\n" );
   }
}


cfbc4da564870b08480e42ea30054f21_9f5337f638836ebfa200e9aac13dd6a4.png


#include <stdio.h>
int main()
{
   unsigned int a = 60;    /* 60 = 0011 1100 */  
   unsigned int b = 13;    /* 13 = 0000 1101 */
   int c = 0;           
   c = a & b;       /* 12 = 0000 1100 */ 
   printf("Line 1 - c 的值是 %d\n", c );
   c = a | b;       /* 61 = 0011 1101 */
   printf("Line 2 - c 的值是 %d\n", c );
   c = a ^ b;       /* 49 = 0011 0001 */
   printf("Line 3 - c 的值是 %d\n", c );
   c = ~a;          /*-61 = 1100 0011 */
   printf("Line 4 - c 的值是 %d\n", c );
   c = a << 2;     /* 240 = 1111 0000 */
   printf("Line 5 - c 的值是 %d\n", c );
   c = a >> 2;     /* 15 = 0000 1111 */
   printf("Line 6 - c 的值是 %d\n", c );
}


8f647daa4bf5539720232433f0cfbca3_37fb19be54c7c1c602d80403c694aeaf.png


四.赋值运算符


C 语言共提供了 11 个赋值运算符,均为二元运算符,其中仅有一个为基本赋值运算符 =,其余 10 个均是复合赋值运算符。


1.简单的赋值运算符(" = ") :右边操作数的值赋给左边操作数。


2.加且赋值运算符 ("+="):把右边操作数加上左边操作数的结果赋值给左边操作数。


3减且赋值运算符 ("-+" ) :把左边操作数减去右边操作数的结果赋值给左边操作数。


4.乘且赋值运算符 ("*=" ) :把右边操作数乘以左边操作数的结果赋值给左边操作数。


5.除且赋值运算符 ("/=" ) :把左边操作数除以右边操作数的结果赋值给左边操作数。


6.求模且赋值运算符("%=" ) 求两个操作数的模赋值给左边操作数。


7.左移且赋值运算符("<<=" )


8.右移且赋值运算符(">>=" )


9.按位与且赋值运算符("&=" )


10.按位异或且赋值运算符("^=" )


11.按位或且赋值运算符("|=" )


以下是赋值运算符的运用


#include <stdio.h>
int main()
{
   int a = 21;
   int c ;
   c =  a;
   printf("Line 1 - =  运算符实例,c 的值 = %d\n", c );
   c +=  a;
   printf("Line 2 - += 运算符实例,c 的值 = %d\n", c );
   c -=  a;
   printf("Line 3 - -= 运算符实例,c 的值 = %d\n", c );
   c *=  a;
   printf("Line 4 - *= 运算符实例,c 的值 = %d\n", c );
   c /=  a;
   printf("Line 5 - /= 运算符实例,c 的值 = %d\n", c );
   c  = 200;
   c %=  a;
   printf("Line 6 - %%= 运算符实例,c 的值 = %d\n", c );
   c <<=  2;
   printf("Line 7 - <<= 运算符实例,c 的值 = %d\n", c );
   c >>=  2;
   printf("Line 8 - >>= 运算符实例,c 的值 = %d\n", c );
   c &=  2;
   printf("Line 9 - &= 运算符实例,c 的值 = %d\n", c );
   c ^=  2;
   printf("Line 10 - ^= 运算符实例,c 的值 = %d\n", c );
   c |=  2;
   printf("Line 11 - |= 运算符实例,c 的值 = %d\n", c );
}


21d2cdead115c4c78a8ad7409a1fa190_779c4e3fc15373246228c0494013d566.png


五.三目运算符(“?:”)


三目运算符,又称条件运算符,是计算机语言(c,c++,java等)的重要组成部分。它是唯一有3个操作数的运算符,有时又称为三元运算符。一般来说,三目运算符的结合性是右结合的。


常见用法如: if(a>b) max=a;else max=b;可用条件表达式写为 max=(a>b) ? a : b;


六.sizeof()


返回变量的大小,并非函数而是运算符与strlen()常被弄混


常见的使用形式为sizeof(变量名)


注:变量名可不被括号括住如sizeof a,不可用sizeof(void)


七.逗号运算符


一条语句理论上是有返回值的,如果语句里面有多个逗号,则以最后一个逗号后面的表达式值为返回值

目录
相关文章
|
4月前
|
存储 C语言 C++
【c语言】运算符汇总(万字解析)
今天博主跟大家分享了c语言中各种操作符的功能、使用方法以及优先级和结合性,并且与大家深入探讨了表达式求值的两个重要规则--算数转换和整形提升。学习这些知识对我们的C语言和C++学习都有着极大的帮助。
214 2
|
16天前
|
人工智能 Java 程序员
一文彻底搞清楚C语言的运算符
本文详细介绍了C语言中的各类运算符,包括算术、关系、逻辑、位运算符、赋值、三目运算符及sizeof,帮助读者深入理解其用法与特性。君志所向,一往无前,希望在成长的路上有你相伴!
74 1
一文彻底搞清楚C语言的运算符
|
16天前
|
人工智能 Java 程序员
一文彻底搞定C语言的表达式和语句
本文介绍了C语言中的表达式和语句,涵盖算术、关系等表达式及各类语句的用法,帮助初学者理解核心概念。本文介绍C语言表达式(算术、关系等)和语句(表达式、复合、控制、函数、空语句),助你掌握核心概念。
36 0
一文彻底搞定C语言的表达式和语句
|
2月前
|
C语言
【C语言程序设计——入门】基本数据类型与表达式(头歌实践教学平台习题)【合集】
这份文档详细介绍了编程任务的多个关卡,涵盖C语言的基础知识和应用。主要内容包括: 1. **目录**:列出所有关卡,如`print函数操作`、`转义字符使用`、`数的向上取整`等。 2. **各关卡的任务描述**:明确每关的具体编程任务,例如使用`printf`函数输出特定字符串、实现向上取整功能等。 3. **相关知识**:提供完成任务所需的背景知识,如格式化输出、算术运算符、关系运算符等。 4. **编程要求**:给出具体的代码编写提示。 5. **测试说明**:包含预期输入输出,帮助验证程序正确性。 6. 文档通过逐步引导学习者掌握C语言的基本语法和常用函数,适合初学者练习编程技能。
84 1
|
6月前
|
C语言
C语言判断和运算符联系
在 C 语言中,判断与运算符紧密相关,主要体现在条件表达式的使用上。
229 87
|
3月前
|
C语言
【C语言】条件运算符详解 - 《 A ? B : C 》
条件运算符(也称为三元运算符)是C语言中唯一的三元运算符。它通常用于替代简单的 `if-else` 语句。
228 6
|
6月前
|
安全 C语言
C语言运算符的使用注意点
在C语言中,正确使用运算符能提升代码的可读性和效率。本文介绍了八大注意事项:运算符优先级和结合性影响运算顺序;自增/自减运算符分前缀和后缀形式;逻辑运算符有短路特性;位运算符直接操作二进制位需谨慎;条件运算符简洁但避免复杂嵌套;类型转换避免意外结果;使用括号明确运算顺序。掌握这些要点有助于编写更安全高效的代码。
267 72
|
4月前
|
C语言
c语言运算符
C的运算符有以下几种: 算术运算符:+、-、*、/、% 结合方向自左向右 关系运算符:>、<、==、>=、<=、!= 逻辑运算符:!、&&、|| 位运算符<<、>>、~、|、^、& 赋值运算符:=及符号扩展赋值运算符(+=、-=、*=、/=) 条件运算符:? : 逗号运算符:, 指针运算符:*、& 求字节运算符:sizeof 强制类型转换运算符:((类型)) 分量运算符:.、-> 下标运算符:[]
55 4
|
5月前
|
存储 Java C语言
【一步一步了解Java系列】:了解Java与C语言的运算符的“大同小异”
【一步一步了解Java系列】:了解Java与C语言的运算符的“大同小异”
72 3
|
5月前
|
C语言
C语言条件运算符详解
C语言条件运算符,也称为三元运算符,是一种简化if-else语句的表达式,形式为:条件?表达式1:表达式2。当条件为真时,计算并返回表达式1的值;否则计算并返回表达式2的值。它可用于快速实现简单的条件分支逻辑。