成长之路---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)


七.逗号运算符


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

目录
相关文章
|
1月前
|
存储 C语言
C语言数据类型、变量和运算符以及printf相关问题
C语言数据类型、变量和运算符以及printf相关问题
|
8天前
|
C语言
C语言判断和运算符联系
在 C 语言中,判断与运算符紧密相关,主要体现在条件表达式的使用上。
151 87
|
7天前
|
安全 C语言
C语言运算符的使用注意点
在C语言中,正确使用运算符能提升代码的可读性和效率。本文介绍了八大注意事项:运算符优先级和结合性影响运算顺序;自增/自减运算符分前缀和后缀形式;逻辑运算符有短路特性;位运算符直接操作二进制位需谨慎;条件运算符简洁但避免复杂嵌套;类型转换避免意外结果;使用括号明确运算顺序。掌握这些要点有助于编写更安全高效的代码。
156 72
|
8天前
|
程序员 C语言
【C语言基础考研向】06运算符与表达式
本文介绍了C语言中的运算符分类、算术运算符及表达式、关系运算符与表达式以及运算符优先级等内容。首先概述了13种运算符类型,接着详细说明了算术运算符的优先级与使用规则,以及关系运算符和表达式的真假值表示,并给出了C语言运算符优先级表。最后附有课后习题帮助巩固理解。
57 10
|
8天前
|
存储 编译器 C语言
【C语言基础考研向】07逻辑运算符与赋值运算符
本文介绍了C语言中的逻辑运算符与逻辑表达式、赋值运算符以及求字节运算符`sizeof`。逻辑运算符包括`!`(逻辑非)、`&&`(逻辑与)和`||`(逻辑或),其优先级规则与数学运算符类似。通过示例展示了如何用这些运算符判断闰年及逻辑非的运算方向。此外,文章还解释了左值与右值的概念及其在赋值运算中的应用,并介绍了复合赋值运算符的使用方法,如加后赋值`+=`和乘后赋值`*=`。最后,通过`sizeof`运算符示例展示了如何获取变量的字节大小。
|
11天前
|
C语言
C语言程序设计核心详解 第二章:数据与数据类型 4种常量详解 常见表达式详解
本文详细介绍了C语言中的数据与数据类型,包括常量、变量、表达式和函数等内容。常量分为整型、实型、字符型和字符串常量,其中整型常量有十进制、八进制和十六进制三种形式;实型常量包括小数和指数形式;字符型常量涵盖常规字符、转义字符及八进制、十六进制形式;字符串常量由双引号括起。变量遵循先定义后使用的规则,并需遵守命名规范。函数分为标准函数和自定义函数,如`sqrt()`和`abs()`。表达式涉及算术、赋值、自增自减和逗号运算符等,需注意运算符的优先级和结合性。文章还介绍了强制类型转换及隐式转换的概念。
|
1月前
|
C语言
C语言------运算符与表达式
这篇文章是C语言运算符与表达式的实训教程,通过多个示例程序展示了如何使用算术运算符、关系运算符、逻辑运算符以及条件语句来解决实际问题,并介绍了如何通过函数库简化复杂数学运算。
C语言------运算符与表达式
|
28天前
|
C语言
C语言中的运算符
C语言中的运算符
23 0
|
1月前
|
测试技术 C语言 C++
【C语言刷题训练——6】鹏哥C语言刷题训练营笔记,含代码讲解改进
【C语言刷题训练——6】鹏哥C语言刷题训练营笔记,含代码讲解改进
|
1月前
|
存储 C语言
【C语言】鹏哥C语言刷题训练营——第5节内容笔记(含代码全面分析和改进,讲解)
【C语言】鹏哥C语言刷题训练营——第5节内容笔记(含代码全面分析和改进,讲解)