【操作符c语言】

目录

操作符分类

算数操作符

移位操作符

  • 移位操作符语法规范(<<
  • 原码反码补码简介

位操作符

  • 简介
  • 通过一个例子说明位操作符作用
  • 异或运算的性质

赋值操作符

  • 注意事项
  • 复合赋值操作符

 

单目操作符

操作符详解

1.各种操作符介绍

2.表达式求值

 

 H2   ​操作符分类

  • 算术操作符
  • 移位操作符
  • 位操作符
  • 赋值操作符
  • 单目操作符
  • 关系操作符
  • 逻辑操作符
  • 条件操作符
  • 逗号表达式
  • 下标引用,函数调用和结构成员

 H2   ​算数操作符

加法操作符(+)

3. 减法操作符(-)

4. 乘法操作符(*)

5. 除法操作符(/)

6. 取模操作符(%)

 

  • 用法:用于取余运算。
  • 例如:int remainder = a % b;
  • 注意事项:取模操作符只适用于整数类型的操作。
  • 用法:用于执行除法运算。
  • 例如:float result = p / q;
  • 注意事项:整数除法会丢弃小数部分,若要得到浮点数结果,需要将操作数转换为浮点型。
  • 用法:用于执行乘法运算。
  • 例如:int product = m * n;
  • 注意事项:乘法操作符同样适用于整型和浮点型数据。
  • 用法:用于执行减法运算。
  • 例如:int diff = x - y;
  • 注意事项:减法操作符也可以用于整型、浮点型和指针类型的操作。
  • 用法:用于执行加法运算。
  • 例如:int sum = a + b;
  • 注意事项:加法操作符可以用于整型、浮点型和指针类型的操作。

 

若要得到浮点数结果,需要将操作数转换为浮点型什么意思

 

将操作数转换为浮点型意味着将整数操作数或其他数据类型的操作数转换为浮点数,以便在除法运算中得到浮点数结果。在C语言中,如果两个整数相除,结果会被截断为整数,即舍弃小数部分。为了得到精确的浮点数结果,需要将其中至少一个操作数转换为浮点数,这样可以避免丢失小数部分。转换操作数为浮点型可以通过将其赋值给浮点型变量或者使用类型转换操作符来实现。

 

听不懂

 

在C语言中,如果你用一个整数除以另一个整数,比如5 / 2,结果会是2而不是2.5。这是因为C语言默认会把两个整数相除的结果也当作整数处理。

所以,如果你想要得到浮点数的运算结果,比如5 / 2得到2.5,你需要将至少一个操作数转换成浮点数。做法是将其中一个操作数改为浮点类型,例如写成5.0 / 2或者5 / 2.0。这样就能够得到期望的浮点数结果。

 

那我想得到2.50是不是把5改成5.00

 

2024/2/25 12:59:05

是的,你可以将5改成5.00,这样在进行除法运算时就能得到2.50这样的浮点数结果。C语言会自动将小数点后面的0去掉,所以2.50会被显示为2.5。

 

浮点数是什么

 

 

浮点数是一种用来表示小数的数据类型。在C语言中,通常使用float或double关键字来声明浮点数变量。浮点数可以表示带有小数部分的数值,例如3.14、-0.001、等等。与整数不同,浮点数可以包含小数部分,因此在许多实际应用中,浮点数被用来表示需要更高精度的数值。

 

float和double区别

 

 

在C语言中,float和double是用来表示浮点数的两种数据类型。它们之间的主要区别在于存储精度和大小。

总的来说,如果对精度要求不是特别高,或者内存空间有限,可以选择使用float;而对于需要更高精度或者范围更广的数值计算,则建议使用double

 

 

  • float:float是单精度浮点数类型,占用4个字节(32位),可以表示大约6-7位有效数字。通常用于普通的浮点数运算,适合一般精度要求的场景。
  • double:double是双精度浮点数类型,占用8个字节(64位),可以表示大约15-16位有效数字。由于其更高的精度,通常用于需要更高精度计算的场景,如科学计算、工程应用等。

 H2   ​移位操作符

移位操作符是编程语言中用于对二进制数进行位移动的一类操作符。主要包括左移(<<)、右移(>>)和无符号右移(>>>)等几种。

只对整数适用小数不能移位操作

应用场景:

 

 

  • 优化整数乘法和除法运算。
  • 处理位级操作、数据清除和提取。
  • 实现逻辑掩码、数据压缩和扩展等功能。
  • 无符号右移操作将一个数的所有二进制位向右移动指定的位数,高位补0
  • 无符号右移操作主要用于处理无符号整数,不考虑符号位,可用于数据清零或提取特定的位信息。
  • 无符号右移操作【逻辑右移】(>>>)
  • 右移操作将一个数的所有二进制位向右移动指定的位数,高位补符号位。
  • 对于无符号整数,右移操作相当于将这个数除以2的n次方,其中n是右移的位数。
  • 右移操作【算数右移】(>>)
  • 左移操作将一个数的所有二进制位向左移动指定的位数,低位补0
  • 左移操作相当于将这个数乘以2的n次方,其中n是左移的位数。
  • 左移操作(<<)

移位操作符语法规范(<<)

c复制代码

result = operand << shiftAmount;

//注意, int b = a<<1; 并没有改变a 的值。类似b=a+1;

//举个例子

int main() {

    //练习:求补码中的1的个数

 

    int a = 4;

    int count = 0;

    int i;

    for (i = 0; i < 32; i++) {

        int b = a & 1;

        if (b == 1) {

            count++;

        }

        a = a >> 1;

        /*a >> 1;*/

        //错误点没有对a进行移位操作没有改变a,必须用a接受一下

    }

    printf("%d", count);

    return 0;

}

 

 

  • operand 是要进行左移操作的数值或表达式。
  • shiftAmount 是要左移的位数(必须是整型)
  • result 是接收左移操作结果的变量。

原码反码补码简介

整数的二进制表示有3种:源码反码和补码。

正数的原码反码补码相同;负数的原码反码补码需要计算

 

 

  • 补码是反码加1所得到的结果。对于正数,它的补码与原码相同。对于负数,首先要求反码,然后再加1
  • 例如,十进制数5的补码和原码相同,仍为00000101,而-5的补码是11111011。
  • 补码
  • 例如,十进制数5的反码和原码相同,仍为00000101,而-5的反码是11111010。
  • 反码是将符号位保持不变,其他位按位取反(0变1,1变0)得到的结果。
  • 反码
  • 原码是最直观的一种表示方法,在一个数值最前面加上符号位来表示正负数,正数的符号位为0,负数的符号位为1。(第一位是符号位)
  • 例如,十进制数5的原码是00000101,而-5的原码则是10000101。
  • 原码

设计反码和补码的主要意义在于处理负数。使用原码表示负数时,加法和减法操作变得很复杂,因为需要单独的逻辑来处理符号位。

反码和补码的设计简化了负数的表示和运算:

这些编码方式的设计使得计算机可以更高效地进行整数的加减运算,同时简化了处理有符号整数的硬件设计。

 

 

  • 反码:通过将负数的绝对值按位取反来表示负数,这样简化了负数的加法运算。
  • 补码:补码是进一步改良的表示方法,它不仅简化了负数的加法运算,还能够用同样的硬件电路进行减法运算,从而对计算机系统的设计提供了便利。

 

因为正数源码补码相同所以源码就是

 

printf输出“14”

 H2   ​位操作符

& //按位与

| //按位或

^ //按位异或

注:它们的操作数必须是整数。

简介

通过一个例子说明”位操作符“作用

#include <stdio.h>

 

int main() {

    int a = 5;

    int b = 8;

 

    printf("交换前:a = %d, b = %d\n", a, b);

 

    // 使用异或操作交换ab的值

    a = a ^ b;

    b = a ^ b;

    a = a ^ b;

 

    printf("交换后:a = %d, b = %d\n", a, b);

 

    return 0;

}

上述代码首先定义了两个整型变量 a 和 b,并赋予它们初始值。然后通过三次异或操作实现了变量的交换。

运行该程序,输出结果为:

交换前:a = 5, b = 8

交换后:a = 8, b = 5

通过这种方法,不需要借助第三个临时变量就能够交换两个变量的值。

为什么能这样

 

 

这种交换变量的方法利用了异或操作的特性。具体来说,假设有两个变量 a 和 b:

 

 

因此,通过这三步操作,就成功地实现了不使用临时变量的情况下交换了变量 a 和 b 的值。

 

 

  • 首先执行 a = a ^ b,这样得到的结果被存储在变量 a 中。
  • 然后执行 b = a ^ b,由于 a 现在已经被更新为 a ^ b,所以实际上此时的操作相当于 b = (a ^ b) ^ b,根据异或运算的性质,b = a ^ (b ^ b),而任何数与自己进行异或操作都等于0,所以 b 实际上变成了之前的 a 的值。
  • 最后执行 a = a ^ b,由于 a 在第一步中已经被更新为 a ^ b,而 b 已经变成了之前的 a 值,所以此时的操作相当于 a = (a ^ b) ^ a,同样利用异或运算的性质,a = b ^ (a ^ a),也是得到了之前的 b 的值。

 

前置知识

异或运算的性质

异或运算是自身的逆运算,即 a ^ b ^ b = a。这句话什么意思

这句话的意思是,如果你对一个数连续进行两次与相同数值的异或运算,那么最终的结果将会回到原始的数值。这可以被通俗地解释为:假设有一个开关,每次按一下就会改变灯的状态,再按一下又会将其改回原来的状态。如果你连续按两次开关,最终灯的状态跟开始一样。

 

这些性质使得异或运算在编程中具有广泛的应用,包括加密解密、数据校验、交换变量值等方面。

 

  • 结合律:对于任意三个数 a、b、c,满足 (a ^ b) ^ c = a ^ (b ^ c)
  • 交换律:对于任意两个数 a、b,满足 a ^ b = b ^ a
  • 恒等律:对于任意数 a,满足 a ^ 0 = a。即任何数与 0 进行异或操作都会保持原值
  • 自反性:对于任意数 a,满足 a ^ a = 0。即一个数与自己进行异或操作的结果为0。
  • 清零:对于任意数 a,满足 a ^ a = 0a ^ 0 = a。这表示可以通过将一个数与另一个相同的数进行异或操作,将其清零
  • 自身逆运算:异或运算是自身的逆运算,即 a ^ b ^ b = a。

对于与操作‘&’,和或操作‘|’

它们都满足结合律。也就是说,对任意三个数 a、b、c,有:

与操作

结合律:(a & b) & c = a & (b & c)

与操作也具有清零的特性,即 a & 0 = 0//这意味着通过将一个数与0进行与操作,可以将其特定位清零。

或操作:

交换律: a | b = b | a此外,

结合律:(a | b) | c = a | (b | c)

恒等律:即 a | 0 = a//这表示通过将一个数与0进行或操作会保持原值不变。

 

 

  • 交换律 a & b = b & a

 H2   ​赋值操作符

赋值操作符定义:

 

赋值操作符的注意事项:

 

最佳实践:

 

 

  • 维护代码的可读性和清晰性,避免过度复杂的赋值操作
  • 不建议连续赋值。(1.调试过程中一次跳过不好观察变量的值2.可读性不好,还要考虑系统是如何执行此代码的。)
  • 一个非常复杂的表达式(还包括各种操作符的优先级),里面包含一堆功能的代码是垃圾代码。作为程序员要写可读,简洁,高效的代码。
  • 数据类型匹配:确保赋值操作符两侧的数据类型相匹配,避免不必要的类型转换或错误。
  • 连续赋值:可以连续赋值,例如 a = b = c = 5。(从右往左算)
  • 多重赋值:可以同时为多个变量赋值,例如 a, b = 5, 10。
  • 赋值操作符用于将一个值赋给变量,例如 a = 5。

连续赋值理解:以a=b=c=5;改变c的值会不会影响a,b为例

如果使用 a = b = c 这样的赋值语句,它们各自存储着相同的值,而不是指向相同的内存地址。因此,修改其中一个变量的值不会影响其他变量。

例如,如果执行 b = 3,那么只有变量 b 的值会改变为 3,而 a 和 c 的值不会受到影响。因为在C语言中,赋值操作会将右边表达式的值复制一份给左边的变量,而不是共享相同的内存地址。

在连续赋值中,多个变量可以被同时赋予相同的值。当执行连续赋值时,赋值是从右向左进行的,这意味着右侧的表达式会首先计算,然后将结果传递给左侧的变量。

所以,在C语言中,连续赋值并不会导致变量之间共享数值或指向相同的内存地址。

 

复合赋值操作符

在C语言中,复合赋值操作符是一种便捷的方式,用于同时进行运算和赋值。这些操作符结合了算术运算符和赋值操作符,可以简化代码并使其更易读。

以下是几个常见的复合赋值操作符及其含义:

 

 

 

 

 

使用复合赋值操作符可以简化代码,并且有助于提高可读性。它们执行相应的运算并将结果赋给左侧的操作数,从而避免了重复输入变量名,提高了效率

 

  • &=:按位与赋值,例如 a &= 3 相当于 a = a & 3,将 a 和 3 进行按位与操作后再赋给 a。
  • |=:按位或赋值,例如 b |= 5 相当于 b = b | 5,将 b 和 5 进行按位或操作后再赋给 b。
  • ^=:按位异或赋值,例如 c ^= 6 相当于 c = c ^ 6,将 c 和 6 进行按位异或操作后再赋给 c。
  • <<=:左移赋值,例如 d <<= 2 相当于 d = d << 2,将 d 向左移动两位后再赋给 d。
  • >>=:右移赋值,例如 e >>= 3 相当于 e = e >> 3,将 e 向右移动三位后再赋给 e。
  • %=:取模赋值, 例如 e %= 7 相当于 e = e % 7,表示将 e 的值对7取模后再赋给 e。
  • /=:  除法赋值,例如 d /= 4 相当于 d = d / 4,表示将 d 的值除以4后再赋给 d。
  • *=: 乘法赋值,例如 c *= 2 相当于 c = c * 2,表示将 c 的值乘以2后再赋给 c
  • -=:  减法赋值,例如 b -= 3 相当于 b = b - 3,表示将 b 的值减去3后再赋给 b。
  • += 加法赋值,例如 a += 5 相当于 a = a + 5,表示将 a 的值加上5后再赋给 a

 H2   ​单目操作符

简介

什么是单目操作符?

  • 双目操作符:类似‘+’,(a+b)有两个操作数(作用对象)的操作符
  • 单目操作符:只有一个操作数的操作符
 

 

int(){

 

//单目操作符‘-’的使用。

int a = -10;

int b = -a;

printf("%d",a);

printf("%d",b);

 

//取地址符‘&’

&a//a4个字节,每个字节都有一个地址,取地址符取出来的是第一个地址。

 

//我们用p来接受&a的值(p=&a)

//p的类型怎么写呢--指针变量int*

int* p = &a;

 

//sizeof也是一个操作符(运算符)计算类型或变量所占内存空间的大小,单位是”字节“

int n = sizeof(a);//也可以int n = sizeofint;

 

return 0;

}

对二进制的一位进行定向修改

~操作符_哔哩哔哩_bilibil

前置++和后置++

前置++

 

c复制代码

intx = 5;
inty = ++x;
// 在这个例子中,x 的值会先加一,然后赋给 y// 执行完上面的语句后,x 的值为 6,y 的值也为 6

后置++

c复制代码

intx = 5;
inty = x++;
// 在这个例子中,x 的值会先赋给 y,然后再加一// 执行完上面的语句后,x 的值变成 6,而 y 的值为 5

通过这些例子,可以更清楚地理解前置++和后置++运算符之间的区别。

注意:前置++和后置++都会改变变量的具体值

//例如

int a = 0;

a++;//++a;

//a的值会改变为1(类比for循环的i++)

 

 

当涉及C语言中的前置++和后置++运算符时,以下是它们之间的主要区别:

总之++a(前置++)是先++,后使用;a++(后置++)是先使用后++

  • 前置++: 通常用于需要在使用变量之前增加其值的情况。
  • 后置++: 通常用于需要在使用变量之后增加其值的情况。
  • 实际应用
  • 前置++: 表达式的结果是递增后的值。
  • 后置++: 表达式的结果是递增前的值。
  • 表达式结果
  • 前置++: 变量的值会先加一,然后再参与其他计算或赋值。
  • 后置++: 变量的值会先用于其他计算或赋值,然后再加一。
  • 执行顺序
先++,后使用,使用意思的理解

a--;  是一个表达式,先使用后-- 。(所以先打印)

但是在内置中例如fori=0; i<a; i++);   这个i++++i没区别(都是让i的值加一)
 

 H2   ​关系操作符

注意:不是所有的东西都能比较相等的

if(a==b);可以

if(“abc”==“acn”);不可比较

这样实际上是在比较两个字符串首元素地址

 

 

 

 H2   ​逻辑操作符

      

       &&  “逻辑与

       | |  "逻辑或

 

区分”按位与“和“逻辑与”,”按位或“和“逻辑或“

逻辑与和逻辑或,不关注二进制位,只关注真假。

 

例题

打印结果:a=1; b=2; c=3; d=4;

1.程序执行a++;先使用后++

2.使用a=0;根据逻辑代数公式后面无意义直接忽略不执行;

3.执行++a的值加1.

总结:打印结果a的值为1,其他变量还和原来一样不变。

 

打印结果:a=2;b=2;c=3;d=4;

  1. 首先a++,先使用再++,使用a=1,或运算只要有一项等于1则后面直接忽略

简便记法

总结:对于逻辑与’&&‘,左边为假右边就不计算了;对于逻辑或’||‘,左边为真右边就不计算了

 

 

 H3   ​逻辑表达式执行原理

 

c程序在逻辑表达式上是如何执行的,以

int a = 0, b = 2, c = 3, d = 4;

int i = a++ || ++b || c++ || d++;为例

 

 

在C程序中,逻辑表达式按照短路求值规则执行。对于给定的表达式 int i = a++ || ++b || c++ || d++;,执行过程如下:

 

初始时,a = 0, b = 2, c = 3, d = 4

首先计算 a++。由于递增操作符后置,所以这里会使用 a 的当前值(0),然后将 a 的值加一。因此,a++ 的结果为 0

检查 a++ 是否为真由于 0 被视为假,所以继续执行下一个操作数

然后计算 ++b。这里 ++b 会使 b 的值加一,并且返回新的值。所以现在 b 的值为 3

检查 ++b 是否为真由于非零值被视为真,所以整个表达式的值就是真(1)了

由于短路求值规则,在找到第一个为真的操作数后,后续的操作数就不再计算了。因此,c++ 和 d++ 不会被执行。

最终,变量 i 的值为 1(表示真)。而 a 的值为 1b 的值为 3c 的值为 3d 的值为 4

逻辑表达式顺序是从左往右执行

 

 

 
短路求值规则

详细通俗介绍短路求值规则

 

 

短路求值规则是指在逻辑表达式中,如果通过计算前面的部分就能够确定整个表达式的结果,那么后面的部分就不会再被计算不执行。这种机制类似于遇到短路一样,提前结束后续计算。

 

举个简单的例子,假设有一个逻辑表达式 A && B(表示 A B 都为真时整个表达式才为真),如果 A 的值为假,那么无论 B 的值是什么,整个表达式都将为假。因此,在这种情况下,B 的值就不会被计算,因为已经可以确定整个表达式的结果了。

 

同样地,对于逻辑或表达式 A || B(表示 A 或者 B 任意一个为真时整个表达式就为真),如果 A 的值为真,那么整个表达式就为真,这时候就不会再计算 B 的值了。

 

总之,短路求值规则可以帮助程序在判断逻辑表达式时尽可能地节省计算资源提高执行效率

 

 

 

 

 H2   ​条件操作符

简介

条件操作符(Conditional Operator),也称为三元运算符,是一种在许多编程语言中都存在的特殊操作符。在C语言中,条件操作符的形式为

 condition ? expr1 : expr2。这个表达式首先计算 condition(条件) 的返回值(真假)。如果 condition(条件) 为真,则整个表达式的值为 expr1否则,整个表达式的值为 expr2

以下是条件操作符的总结报告:

  • 语法:条件操作符的语法是 condition ? expr1 : expr2,其中 condition 是一个要求得到真或假值的表达式,expr1 和 expr2 则是根据 condition 的值而选择的两个可能的结果。

理解

int a = 10;

int b = (a > 5) ? 100 : 200// 如果 a 大于 5b 被赋值为 100,否则被赋值为 200

 注意不是把后面的值赋给a,而是赋给整个()里的表达式,condition是判断依据,而expr1和expr2是两个待定的(整个表达式)返回值

  • 作用:条件操作符提供了一种简洁的方式来表示基于条件进行选择的逻辑,避免了使用 if-else 语句时的冗余性。
  • 执行顺序:条件操作符是从左往右执行的。首先计算 condition 的值,然后根据 condition 的值来确定返回 expr1 还是 expr2。
  • 适用范围:条件操作符通常用于需要根据条件来选择不同行为的情况,例如在赋值语句中根据条件来选择不同的值。
  • 注意事项:使用条件操作符时需要谨慎,确保表达式清晰易懂。过度复杂的条件操作符可能会影响代码的可读性。

总的来说,条件操作符是一种便捷的方法,可以根据条件快速地选择不同的值或行为,但需要适度使用以保持代码的可读性

 

 

条件操作符提供了一种简洁的方式来表示基于条件进行选择的逻辑,避免了使用 if-else 语句时的冗余性,这是什么意思通俗的讲讲

当我们需要根据某个条件来选择不同的值或执行不同的操作时,通常会使用 if-else 语句。条件操作符提供了一种更简洁、更紧凑的方式来表达这种逻辑。

举个例子,假设我们有一个变量 age,如果 age 大于等于 18,我们想要给变量 status 赋值为 "成年",否则赋值为 "未成年"。使用 if-else 语句,我们可能会这样写:

if (age >= 18) {

    status = "成年";

} else {++

    status = "未成年";

 

}

//而使用条件操作符,可以用更简洁的方式来表达同样的逻辑:

status = (age >= 18) ? "成年" : "未成年";

 

/*这里 (age >= 18) ? "成年" : "未成年" 表示:如果 age 大于等于 18,则返回 "成年";否则返回 "未成年"。整个表达式将根据条件的真假自动选择合适的值来赋给 status 变量。这种方式避免了书写 if-else 语句时的冗余性,让代码更加简洁易懂。*/

 

 

条件操作符应用

  • 比大小

int a = 1, b = 2;

int max = (a > b ? a : b);

printf("%d", max);

 

 H2   ​逗号表达式

对于代码2

if(a=b+1,c=a/2,d>0);//()内为逗号表达式

/*逗号表达式,前两项要算(要执行),真正承担判断作用的是最后一项(因为逗号表达式会返回最后一项的值)*/

 

 先执行一些语句再进行判断

 

 

 

 

 H2   ​下标引用 函数调用 和 结构成员

 H3   ​下标引用操作符 []

简介

下标引用操作符[]用于访问数组中的元素,其基本形式为array[index]。在C语言中,该操作符允许我们通过数组名和一个整数索引来访问数组的特定元素。例如,arr[5]表示数组arr中的第6个元素(数组索引从0开始)。另外,在C语言中由于数组名和下标操作符之间的关系是通过指针运算实现的,所以

表达式arr[i]等价于*(arr + i)

此外,在C语言中也可以使用ptr[index]访问指针指向的内存中的元素,其中ptr是指针index是偏移量

总之,下标引用操作符[]在C语言中为我们提供了一种方便的方式来访问数组和指针指向的元素。

 

举个例子

调试结果

 

c语言,int arr[10]={0}; arr[7] = 7; 7[arr]=9; 为什么还可以这样写

2024/3/10 15:47:44

  arr[7] = *(arr + 7) = *(7 + arr) = 7[arr]

 

在C语言中,数组名和下标操作符[]之间的关系是通过指针运算来实现的。因此,对于arr[7]和7[arr]来说,它们都等价于*(arr+7)和*(7+arr)。这是因为a[b]在C语言中被定义为*(a+b),所以a[b]和b[a]是等价的。因此,在C语言中,你可以像arr[7]一样使用7[arr],因为它们本质上是相同的表达式。

 

 

那可以写成[7]arr=7;吗

在C语言中,数组名通常位于方括号之前,表示对数组元素的引用。因此,写成[7]arr=7;这样的语法是不正确的,并且会导致语法错误。在C语言中应该使用arr[7]=7;来给数组的第8个元素赋值为7。

[arr]7=9;可以这样写吗

在C语言中,表达式[arr]7=9;是不合法的。在C语言中,方括号内应该是用来表示数组索引的,而不是用来作为变量名或者其他标识符的。因此,这种写法会导致语法错误。正确的写法应该是arr[7]=9;来给数组的第8个元素赋值为9。

 

  总结

  • a[b]在C语言中被定义为*(a+b),所以a[b]和b[a]是等价
  • 在C语言中,方括号[]应该放在数组名后面表示索引,而不可以放在前面

 

 

 H3   ​函数调用操作符

 int Add(int x,int y)

{

    return x + y;

}

int main(){

    int a = 1;

    int b = 2;

    int c = Add(a , b);//Add函数名后面的小括号(),就是函数调用操作符

    return 0;

}

/*函数调用操作符不可省略,而sizeof(a)= sizeof a 可以省略,就说明sizeof不是函数,证明他是操作符*/

/*既然()是操作符,那么它的操作数(操作对象),是函数Add,以及参数a,b【操作数至少有一个就是函数名,参数可以没有 nop();】*/

 

函数调用操作符()允许我们在程序中调用函数以执行其中的代码,就像按下了某个按钮一样。

 

 

 

 H3   ​结构成员访问操作符

 

 

  • 39
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值