精华内容
下载资源
问答
  • 2022-05-19 21:04:18

    C语言中运算符分为单目,双目和三目
    顾名思义,就是运算符的操作数的个数
    单目就是一个操作数,比如++,a++,操作数只有一个a
    双目就是两个操作数,最熟悉的就是+,a+b,计算a、b的和
    三目就是三个操作数,?:运算符,比如a?b:c,当a的值为真时,结果是b,否则结果是c。
    注意点:单目从右向左,双目从左向右

    自加自减注意事项
    (1)自加运算符“++”和自减运算符“--”的运算本身是一种赋值运算,其结果是使运算对象的值增1或减1。
    (2)++、--运算符是单目运算符,运算对象可以是整型变量或字符型变量,也可以是实型变量,但不能是常量和表达式。(考点)
    (3)自加、自减运算符无论是作为前缀还是后缀运算符,对于变量而言,其效果相同,但作为表达式来说,其值不同。
    (4)++和--运算符的结合方向是“自右向左”。

    逻辑运算符  &&和||
    &&
    a=1,b=2,c=3,d=4,m=2,n=2;
    执行表达式(m=a>b)&&(n=c>d),之后
    n的值将会变成2,而不是3,因为左边m=a>b已经是0了,
    所以根据&&的特性 右边自然不用计算左边的值为0时,已经确定整个式子为0,所有右边的不会运算
    ||同理,左边的为1,右边不运算

    更多相关内容
  • 运算符分为单目,双目和三目 顾名思义,就是运算符的操作数的个数 ...(2)++、–运算符是单目运算符,运算对象可以是整型变量或字符型变量,也可以是实型变量,但不能是常量和表达式。(考点) (3)自
  • C++单目运算符重载 单目运算符只有一个操作数,如!a,-b,&c,*p,还有最常用的++i和–i等。重载单目运算符的方法与重载双目运算符的方法是类似的。但由于单目运算符只有一个操作数,因此运算符重载函数只有一个参数...
  • 单目运算符 双目运算符 三目运算符

    千次阅读 2021-05-23 07:29:42
    单目就是这个运算符只对一个变量进行操作代表符号:!(逻辑非) ~(按位取反)++(自增)--(自减)举例:int a=1;a++;(第二句“a++”则只对a一个变量进行了操作)2。双目就是这个运算符对两个变量进行操作举例:int a=1,b=2,...

    1。单目就是这个运算符只对一个变量进行操作

    代表符号:!(逻辑非) ~(按位取反)++(自增)--(自减)

    举例:int a=1;a++;(第二句“a++”则只对a一个变量进行了操作)

    2。双目就是这个运算符对两个变量进行操作

    举例:int a=1,b=2,c;c=a+b;(第二句“c=a+b”则是对a,b两个变量进行了操作)

    3。三目就是这个运算符对三个变量进行操作

    代表符号: ?:(条件运算符)

    关于三目运算符

    对于有些选择分支结构,可以使用简单的条件运算符来代替.如:

    引用

    if(a

    min=a;

    else

    min=b;

    可以用下面的条件运算符来处理

    min=(a

    其中"(a

    条件运算符由两个符号组成"?"和":",要求有3个操作对象,所以也叫它三目运算符,它是C语言中唯一的三目运算符.它的一般形式为:

    引用

    表达式1?表达式2:表达式3;

    以下是关于条件运算符的几点说明:

    (1) 通常情况下,表达式1是关系表达式或逻辑表达式,用于描述条件表达式中的条件,表达式2和表达式3可以是常量,变量或表达式.例如:

    引用

    (x==y)?'Y':'N'

    (d=b*b-4*a*c)>=0?sqrt(d):sqrt(-d)

    ch=(ch>='A'&&ch<='Z')?(ch+32):ch

    以上均为合法的条件表达式.

    (2) 条件表达式的执行顺序为:先求解表达式1,若值为非0,表示条件为真,则求解表达式2,此时表达式2的值就作为整个条件表达式的值;若表达式1的值为0,表示条件为假,则求解表达式3,表达式3的值就是整个条件表达式的值.例如:

    引用

    (a>=0)?a:-a

    执行结果是a的绝对值.

    (3) 在程序中,通过把条件表达式的值直接赋予某个变量.例如:

    引用

    min=(a

    执行结果就是将条件表达式的值赋予变量min,即将a和b二者中较小的数赋给min.

    (4) 条件表达式的优先级别仅高于赋值运算符,而低于前面遇到过的所有运算符.因此,min=(a

    (5) 条件运算符的结合方向为"自右至左".

    (6) 条件表达式允许嵌套,即允许条件表达式中的表达式2和表达式3又是一个条件表达式.例如:

    引用

    x>0?1:x<0?-1:0

    上述条件表达式中,表达式3部分又是一个条件表达式.根据条件表达式的结合性,上述条件表达式等价于:

    引用

    x>0?1:(x<0?-1:0)

    其作用是判断x的符号情况.当x为正数时,该条件表达式的值为1;当x为负数时,该条件表达式的值为-1;当x为0时,该条件表达式的值为0.

    (7) 条件表达式不能取代一般的if语句,仅当if语句中内嵌的语句为赋值语句(且两个分支都给同一变量赋值)时才能代替if语句.例如:

    引用

    if(a%2==0)

    printf("even\n");

    else

    printf("odd\n");

    不能写成:

    引用

    (a%2==0)?printf("even\n"):printf("odd\n");

    但可以用下面语句代替:

    引用

    printf("%s\n",(a%2==0?"even":"odd");

    该语句的作用是:若a为偶数,输出even;若a为奇数,输出odd.

    (8) 表达式1,表达式2,表达式3的类型可以不同.此时条件表达式的值的类型为它们中较高的类型.例如:

    引用

    main()

    {

    char c1,ch;

    ch=getchar();

    c1=ch<='Z'&&ch>='A'?' at ':ch;

    putchar(c1);

    }

    该程序的作用是从键盘输入任意一个字符,判别它们是否大写字母,如果是,输出一个@;否则按原样输出 dot

    上例中,程序第6行是关键语句,该语句实现输入字符的判断,选择与更换工作.其执行过程为:先由此语句中的赋值号右侧的条件运算符对输入的字符进行判断和选择,若ch>='A'&&ch<='Z'成立,说明ch是大写英文字母,此时选'@';否则仍选原字符ch,然后把选择的结果赋值给原变量ch dot

    展开全文
  • C++单目运算符重载

    2021-05-23 05:06:34
    单目运算符只有一个操作数,如!a,-b,&c,*p,还有最常用的++i和--i等。重载单目运算符的方法与重载双目运算符的方法是类似的。但由于单目运算符只有一个操作数,因此运算符重载函数只有一个参数,如果运算符...

    单目运算符只有一个操作数,如!a,-b,&c,*p,还有最常用的++i和--i等。重载单目运算符的方法与重载双目运算符的方法是类似的。但由于单目运算符只有一个操作数,因此运算符重载函数只有一个参数,如果运算符重载函数作为成员函数,则还可省略此参数。

    下面以自增运算符”++“为例,介绍单目运算符的重载。

    [例10.5] 有一个Time类,包含数据成员minute(分)和sec(秒),模拟秒表,每次走一秒,满60秒进一分钟,此时秒又从0开始算。要求输出分和秒的值。

    #include

    using namespace std;

    class Time

    {

    public:

    Time( ){minute=0;sec=0;} //默认构造函数

    Time(int m,int s):minute(m),sec(s){ } //构造函数重载

    Time operator++( ); //声明运算符重载函数

    void display( ){cout<

    private:

    int minute;

    int sec;

    };

    Time Time::operator++( ) //定义运算符重载函数

    {

    if(++sec>=60)

    {

    sec-=60; //满60秒进1分钟

    ++minute;

    }

    return *this; //返回当前对象值

    }

    int main( )

    {

    Time time1(34,0);

    for (int i=0;i<61;i++)

    {

    ++time1;

    time1.display( );

    }

    return 0;

    }

    运行情况如下:

    34:1

    34:2

    34:59

    35:0

    35:1 (共输出61行)

    可以看到:在程序中对运算符“++”进行了重载,使它能用于Time类对象。“++”和“--”运算符有两种使用方式,前置自增运算符和后置自增运算符,它们的作用是不一样的,在重载时怎样区别这二者呢?

    针对“++”和“--”这一特点,C++约定,在自增(自减)运算符重载函数中,增加一个int型形参,就是后置自增(自减)运算符函数。

    [例10.6] 在例10.5程序的基础上增加对后置自增运算符的重载。修改后的程序如下:

    #include

    using namespace std;

    class Time

    {

    public:

    Time( ){minute=0;sec=0;}

    Time(int m,int s):minute(m),sec(s){}

    Time operator++( );//声明前置自增运算符“++”重载函数

    Time operator++(int);//声明后置自增运算符“++”重载函数

    void display( ){cout<

    private:

    int minute;

    int sec;

    };

    Time Time::operator++( )//定义前置自增运算符“++”重载函数

    {

    if(++sec>=60)

    {

    sec-=60;

    ++minute;

    }

    return *this;//返回自加后的当前对象

    }

    Time Time::operator++(int)//定义后置自增运算符“++”重载函数

    {

    Time temp(*this);

    sec++;

    if(sec>=60)

    {

    sec-=60;

    ++minute;

    }

    return temp; //返回的是自加前的对象

    }

    int main( )

    {

    Time time1(34,59),time2;

    cout<

    time1.display( );

    ++time1;

    cout<

    time1.display( );

    time2=time1++; //将自加前的对象的值赋给time2

    cout<

    time1.display( );

    cout<

    time2.display( ); //输出time2对象的值

    }

    请注意前置自增运算符“++”和后置自增运算符“++”二者作用的区别。前者是先自加,返回的是修改后的对象本身。后者返回的是自加前的对象,然后对象自加。请仔细分析后置自增运算符重载函数。

    运行结果如下:

    time1 : 34:59(time1原值)

    ++time1: 35:0 (执行++time1后time1的值)

    time1++: 35:1 (再执行time1++后time1的值)

    time2 : 35:0 (time2保存的是执行time1++前time1的值)

    可以看到,重载后置自增运算符时,多了一个int型的参数,增加这个参数只是为了与前置自增运算符重载函数有所区别,此外没有任何作用。编译系统在遇到重载后置自增运算符时,会自动调用此函数。

    展开全文
  • 你所不知道的运算符- 单目运算符

    千次阅读 2019-12-04 20:16:36
    单目运算符、双目运算符、以及三目运算符 单目运算符 单目运算符是指只接受一个操作数的操作符,包括赋值运算符(=)、算术运算符(+ 、-、*、/)、逻辑运算符(|| 、&& 、!)、位逻辑运算符(& 、| 、...

    运算符

    运算符分为: 算数运算符, 关系运算符 , 逻辑运算符。这些都是知道的吧,小编要说的是你所不知道的运算符。单目运算符、双目运算符、以及三目运算符

    单目运算符

    单目运算符是指只接受一个操作数的操作符,包括赋值运算符(=)、算术运算符(+ 、-、*、/)、逻辑运算符(|| 、&& 、!)、位逻辑运算符(& 、| 、^ 、~)、位移运算符(>>、<<)、关系运算符(> 、< 、==)、自增自减运算符(++ 、–)。

    位逻辑运算符(& 、| 、^ 、~)

    一:& 按位与
    用这个运算符时会将两边的操作数在后台转换为二进制数,然后在进行运算。它的作用:可以用来判断奇偶性,而且会比%(取模)运算快。

            var a = 5,
             b = 3;
        	var r = a & b;
        	console.log(r);//1
        	/*  二进制数
              5: 101
              3: 011
              -------------
                 001  -->1
        	*/`
    

    二 . | 按位或
    用这个运算符时也会将两边的操作数在后台转换为二进制数,然后在进行运算。它的作用:取整。

    n = 123.456;
    console.log(n | 0);//123
    

    三 . ^ 异或
    这个运算符更前两个一样,在使用时也会将两边的操作数在后台转换为二进制数,然后在进行运算。它的作用:可以用做交换两个变量之间的值,不借助第三方变量。

            var num1 = 8,
        	num2 = 10;
        	console.log(num1,num2);
        	num1 = num1 ^ num2;
        	num2 = num1 ^ num2;
        	num1 = num1 ^ num2;
        	console.log(num1,num2);
    

    四 . ~ 取反
    这个去反跟 作用可不相同,~ 是取原数字的数学相反数,什么意思呢?意思就是,如果原数字是正数,取反就是负数,如果原数字是负数,取反就是正数,并且还要 -1 。作用:取整。

    console.log(~2);//-3
    

    这些运算符都是不常用的,但是作用却很大,下期讲述双目运算符。

    展开全文
  • 单目运算符重载 1. 示例 #include <iostream> using namespace std; class Date { private: int day, month, year; public: Date(int inMonth, int inDay, int inYear) : month(inMonth), day(inDay), ...
  • 如何单目运算符和双目运算符以及三目运算符

    万次阅读 多人点赞 2017-09-09 23:38:12
    1、单目运算符:  单目运算符是指运算所需变量为一个的运算符,又叫一元运算符,其中有逻辑非运算符:!、按位取反运算符:~、自增自减运算符:++, –等。 逻辑非运算符【!】、按位取反运算符【~】、自增自减...
  • c++单目运算符

    千次阅读 2019-04-17 20:22:43
    操作符重载的是后++运算符 全局 #define _CRT_SECURE_NO_WARNINGS #include using namespace std; class Complex { public: Complex(int a, int b) { this->a = a; this->b = b; } void printComplex() ...
  • 单目运算符 :运算符只对一个变量进行操作。 双目运算符 :对两个变量进行操作。 三目运算符:运算符对三个变量进行操作。 这里记录一下。
  • C语言中的单目运算符,双目运算符与三目运算符

    万次阅读 多人点赞 2019-09-06 09:10:02
    单目运算符:只有一个操作数,例如: 逻辑非运算符【!】、按位取反运算符【~】、自增自减运算符【++ --】、负号运算符【-】、类型转换运算符【(类型)】、指针运算符和取地址运算符【*和&】、长度运算符【sizeof...
  • 单目就是这个运算符只对一个变量进行操作代表符号:!(逻辑非) ~(按位取反)++(自增)--(自减)举例:int a=1;a++;(第二句“a++”则只对a一个变量进行了操作)2。双目就是这个运算符对两个变量进行操作举例:int a=1,b=2,...
  • 以下是关于C++之双目/单目运算符重载问题解析,希望可以加深大家对于C++之双目/单目运算符重载问题的理解,下面就一起来看看C++之双目/单目运算符重载方面的内容吧。1、双目运算符重载1.1格式:L/*左操作数*/ # /*...
  • 一、单目运算符: 自加:++ 自减:– 取反:~ 二、双目运算符 按位与:& 按位或:| 按位异或:^ 左移:<< 右移:>> 三、三目运算符 三目运算符,又称条件运算符; 例如:int a = 2,c = 3; int b =...
  • 1.单目运算符只能重载为类的成员函数 Clock& operator ++ ();//前置单目运算符重载 没有形参,返回的是clock类的引用,是一个左值。 Clock operator ++ (int); //后置单目运算符重载 后置++要有一个int类型的...
  • 单目运算符、双目运算符

    千次阅读 多人点赞 2017-06-19 13:58:04
    单目运算符、双目运算符1、单目运算符在运算中只要1个数字参与运算的叫单目运算。 只有一个操作数。 例子: 逻辑非运算符【!】、按位取反运算符【~】、自增自减运算符【++ –】、负号运算符【-】、类型转换运算符...
  • 其中又分有单目运算符和二目运算符; 一、单目运算符:只对单独一个操作元(变量)进行操作; -------- 其中自增、自减运算符++、--就是典型的单目运算符; 自增、自减运算符的使用特点: 1、他们在使用时可以...
  • 单目运算符重载

    2018-04-06 00:53:19
    前置单目运算符重载规则:设U为前置单目运算符,oprd为类A的对象,则U应被重载为A类的成员函数方式:oprd.operator U()后置单目运算符重载规则:后置单目运算只有两个:"++"和"--"很显然"+...
  • 注意: 注意运算符重载时的函数声明形式...功能:单目运算符重载为类的成员函数 运行结果: 23:59:59 23:59:59 0:0:0 0:0:1 ----------------------------------- Author: Zhang Kaizhou Date: 2019-4-9 18:23:24...
  • 逻辑非 单目 从右至左 ~ 按位取反 ++ 自增 -- 自减 + 正号 - 负号 ) 强制类型转换 new 新建对象 3 * 乘 双目 从左至右 / 除 % 求余 4 + 加法 - 减法 5 > 右移 左移 > 不保留符号右移 6 <=>= 关系运算符 insta
  • 双目运算符重载 1.1格式: L/左操作数/ # /操作符/ R/右操作数/ L#R => L.operator#(R) 成员形式,写在类中,成员函数形式 => operator#(L,R) 非成员形式 //需要定义为类的友元函数 如: cout 《 c1; =&...
  • PTA:单目运算符重载(时钟类)

    千次阅读 2020-05-22 18:17:46
    本题已给出时钟类及其成员函数实现,要求补充完整运算符++重载函数(前置和后置),使之能够实现时钟对象自增1秒。 时钟类定义如下: ... //前置单目运算符重载 friend Clock operator++(Clock& op,in
  • 本题已给出时钟类及其成员函数实现,要求补充完整运算符++重载函数(前置和后置),使之能够实现时钟对象自增1秒。 时钟类定义如下: class Clock { public: Clock(int NewH=0, int NewM=0, int NewS=0); void ...
  • 重载双目运算符和重载单目运算符

    千次阅读 2017-06-06 15:53:17
    new 和delete是单目运算符。 strcpy的用法: 函数原型:char *strcpy(char * est.const char *src) 功能是从src地址开始且含有null结束符的字符串复制到以dest地址开始的字符串中,并返回指向dest的指针。dest的内存...
  • 转载自:...Clock& Clock::operator ++() //前置单目运算符重载函数 { Second++; if(Second>=60) { Second=Second-60; Minute++; if(Minute>=60) { Minute=Minute-60; Hou...
  • C++运算符重载之重载单目运算符

    千次阅读 2017-04-09 10:52:11
    单目运算符只有一个操作数,但是其重载方法类似于双目运算符,在这里以重载单目运算符++为例,介绍单目运算符的重载: 注意“++”和“--”运算符有两种使用方式,前置自增运算符和后置自增运算符,它们的作用是不...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 29,166
精华内容 11,666
关键字:

属于单目运算符的是