
c++條件運(yùn)算符,c語(yǔ)言條件運(yùn)算符?:是什么意思

大家好,今天小編來(lái)為大家解答以下的問(wèn)題,關(guān)于c++條件運(yùn)算符,c語(yǔ)言條件運(yùn)算符?:是什么意思這個(gè)很多人還不知道,現(xiàn)在讓我們一起來(lái)看看吧!C++中問(wèn)號(hào)什么意思?是一個(gè)三目...
大家好,今天小編來(lái)為大家解答以下的問(wèn)題,關(guān)于c++條件運(yùn)算符,c語(yǔ)言條件運(yùn)算符?:是什么意思這個(gè)很多人還不知道,現(xiàn)在讓我們一起來(lái)看看吧!
C++中問(wèn)號(hào)什么意思
?是一個(gè)三目運(yùn)算符可以理解為條件?結(jié)果1:結(jié)果2里面的?號(hào)是格式要求。也可以理解為是不是條件成立,條件成立為結(jié)果1否則為結(jié)果2。<表達(dá)式1>?<表達(dá)式2>:<表達(dá)式3>;"?"運(yùn)算符的含義是:先求表達(dá)式1的值,如果為真,則執(zhí)行表達(dá)式2,并返回表達(dá)式2的結(jié)果;如果表達(dá)式1的值為假,則執(zhí)行表達(dá)式3,并返回表達(dá)式3的結(jié)果。
條件運(yùn)算符的嵌套
條件運(yùn)算符的語(yǔ)法為:
(條件表達(dá)式)?(條件為真時(shí)的表達(dá)式):(條件為假時(shí)的表達(dá)式)
例如:
x=a
條件運(yùn)算符構(gòu)成一個(gè)表達(dá)式。它是C++中唯一一個(gè)3元運(yùn)算符,它們之間用“?”和“:”隔開(kāi)。上例中,把a(bǔ)和b中較小的值賦給x。該例是if...else語(yǔ)句的一個(gè)替代:
if(a
x=a;
else
x=b;
條件運(yùn)算符構(gòu)成表達(dá)式,它是有值的。而if..else語(yǔ)句不能有值,所以if..else語(yǔ)句不能替代條件運(yùn)算符。例如,下面的代碼不能由if..else替代:
cout
輸出語(yǔ)句要打印一個(gè)值,該值是a與b的較小值。由于
條件運(yùn)算符表達(dá)式的值與測(cè)試值沒(méi)有直接的關(guān)系。例如:
cout
該輸出語(yǔ)句中,條件運(yùn)算符表達(dá)式的條件若成立,取值為“file”,否則,取值為“files”。其中,條件為兩個(gè)整型數(shù)的比較,而表達(dá)式的值為字符串。
條件運(yùn)算符可以嵌套。例如:
x>y?"greaterthan":x==y?"equalto":"lessthan"
它等價(jià)于:
(x>y)?"greaterthan":((x==y)?"equalto":"lessthan")
當(dāng)x>y時(shí),值為"greaterthan",x==y時(shí),值為"equalto",否則,值為"lessthan"。條件運(yùn)算符的嵌套可讀性不夠好。
在一個(gè)條件運(yùn)算符的表達(dá)式中,如果后面兩個(gè)表達(dá)式的值類(lèi)型相同,均為左值,則該條件運(yùn)算符表達(dá)式的值為左值表達(dá)式。例如:
intx=5;
longa,b;
(x?a:b)=1;//ok:因?yàn)閍和b都是左值
(x?x:a)=2;//error:x和a不同類(lèi)型。編譯器將其解釋為(1ong)x和a
(x==271:a)=3;//error:1非左值
"(x?a:b)=1"表示當(dāng)x為0時(shí),b=1,否則a=1。這里的括號(hào)是必須的,否則將被看作x?a:(b=1)。"(x?x:a)=2”中,盡管x是左值,a也是左值,但x與a不同類(lèi)型,條件運(yùn)算符要對(duì)其進(jìn)行操作數(shù)的隱式轉(zhuǎn)換,使之成為相同的類(lèi)型。任何被轉(zhuǎn)換的變量都不是左值。
->在C中,條件運(yùn)算符是不能作左值的,所以"(x?a:b)=1;"將通不過(guò)編譯。
c語(yǔ)言中兩個(gè)++是什么意思
這里的++是自增運(yùn)算符,表示對(duì)一個(gè)變量加1,但是這個(gè)++,還有前置和后置的區(qū)別,注意在c語(yǔ)言或者c++中,自增(自減)前置和后置是不一樣的:
如果自增在前(++a),意味著將a+1作為運(yùn)算的值,即先進(jìn)行a=a+1操作,再將運(yùn)算后的a進(jìn)行運(yùn)算;
如果自增在后(a++),意味著將a作為運(yùn)算的值,即先以a的值進(jìn)行運(yùn)算,再執(zhí)行a自增a=a+1的更新操作。
C++重載運(yùn)算符繼承問(wèn)題
的確是這樣的,但是你要注意你重載的+運(yùn)算,運(yùn)算符左右都是fuc類(lèi)生成的對(duì)象但你s1,s2,s3都是shi類(lèi)的對(duì)象,當(dāng)然不適用這個(gè)+運(yùn)算,所以你還需要在shi類(lèi)中重載一次+運(yùn)算符,才行。
C++運(yùn)算符重載的設(shè)計(jì)意義大嗎
我覺(jué)得不那么重要吧,運(yùn)算符重載只是讓代碼好看一些,不用運(yùn)算符可以用函數(shù)啊。不過(guò)作為高級(jí)語(yǔ)言,特別對(duì)于入門(mén)新手就很在乎這些語(yǔ)法。怎么說(shuō)呢,對(duì)比其他語(yǔ)言,javaC#都有這個(gè),C++想要被更多人使用,那也是最好要有吧,多一點(diǎn)競(jìng)爭(zhēng)力。
OK,關(guān)于c++條件運(yùn)算符和c語(yǔ)言條件運(yùn)算符?:是什么意思的內(nèi)容到此結(jié)束了,希望對(duì)大家有所幫助。
本文鏈接:http://www.wzyaohuidianqi.cn/ke/3415.html
