
c++條件運算符,c語言條件運算符?:是什么意思

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