最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++中唯一三元運算符?:實例詳解

 更新時間:2021年03月20日 15:20:42   作者:一捧光陰  
這篇文章主要給大家介紹了關于C++中唯一三元運算符?:的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

C++三元運算符?:

C++有3種運算符:算數運算符、關系運算符和邏輯運算符。

運算符在計算機中的執(zhí)行順序

運算符用來構成表達式并指示計算機執(zhí)行計算,其基本特性就是優(yōu)先級和結合律。在沒有使用小括號確定一個復合表達式中個運算符的計算順序的情況下,編譯器將使用它們的優(yōu)先級和結合律老確定計算順序,優(yōu)先級越高的運算符越先運算。

如果代碼行中的運算符比較多,用括號確定表達式中每一個子表達式的計算順序,避免使用默認優(yōu)先級。

C++中唯一的三元運算符

條件運算符“?:“,其語法為:

// 條件表達式 ? 表達式1 : 表達式2;
bool b_show = true;
int state = b_show ? 0 : 1;
// state = 0;

語義:如果“條件表達式”為true,則整個表達式的值就是表達式1,忽略表達式2;如果“條件表達式”為false,則整個表達式的值就是表達式2,忽略表達式1。等價于以下if/else語句

Result result;
if (條件表達式)
{
 result = 表達式1;
}
else
{
 result = 表達式2;
}

C++三元運算符的一個有意思的地方

同學群里面討論的,感覺很有意思,就記錄下來了。

問題如下:

代碼一

cout << (1 > 2 ? 1 : "1") << endl;

代碼二

cout << (1 > 2 ? 0 : "1") << endl;

代碼三

cout << (1 > 2 ? "hello" : "hi") << endl; 

運行結果是代碼一出錯 error C2446: “:”: 沒有從“const char *”到“int”的轉換,代碼二和三沒有任何問題。

這里再回顧下三元運算符的用法。

val = exp1 ? exp2 : exp3

exp1為真則val = exp2否則val = exp3。

因此不論什么時候都會涉及到一個val后等號的類型轉換。

答案其實很簡單,0可以視作null,因此默認代碼二中cout輸出類型是char *,代碼三中亦是如此,而代碼一中則會出現兩種不同的類型,無法順利進行類型轉換。

此外如果是代碼二的條件為假的情況,則連endl也不會輸出,這個就不知道怎么回事了。

代碼四:

cout << (1 > 2 ? 0 : '1') << endl;

會正確的轉換成int類型。

結論:

編譯器在編譯的時候就根據exp2和exp3確定了val的接收類型,再傳給cout。

這里一個不規(guī)范的0的寫法導致了代碼二的正常執(zhí)行。

總結

到此這篇關于C++中唯一三元運算符?:的文章就介紹到這了,更多相關C++三元運算符?:內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關文章

  • Qt連接MySQL數據庫的實現(保姆級成功版教程)

    Qt連接MySQL數據庫的實現(保姆級成功版教程)

    本文主要介紹了Qt連接MySQL數據庫的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-06-06
  • C++11 thread多線程編程創(chuàng)建方式

    C++11 thread多線程編程創(chuàng)建方式

    這篇文章主要介紹了C++11 thread多線程編程的相關知識,包括線程的創(chuàng)建方式結束方式及互斥鎖的實例代碼詳解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-12-12
  • 華為面試題數字大小寫轉換

    華為面試題數字大小寫轉換

    一個四位數,如1024,1004,打印出他們的中文形式,如果一千零二十四,一千零四,大家參考使用吧
    2013-12-12
  • C語言打印華氏-攝氏溫度對照表的方法

    C語言打印華氏-攝氏溫度對照表的方法

    這篇文章主要介紹了C語言打印華氏-攝氏溫度對照表的方法,涉及C語言字符串與數字操作的相關技巧,非常簡單實用,需要的朋友可以參考下
    2015-07-07
  • QT自定義QTextEdit實現大數據的實時刷新顯示功能實例

    QT自定義QTextEdit實現大數據的實時刷新顯示功能實例

    TextEdit是我們常用的Qt控件,用來顯示文本信息,下面這篇文章主要給大家介紹了關于QT自定義QTextEdit實現大數據的實時刷新顯示功能的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-05-05
  • C++實現LRU緩存的操作方法

    C++實現LRU緩存的操作方法

    LRU是一種常用的緩存淘汰策略,主要目的是在緩存空間有限的情況下,優(yōu)先淘汰那些最長時間沒有被訪問的數據項,這篇文章主要介紹了C++實現LRU緩存,需要的朋友可以參考下
    2024-07-07
  • C++ 17標準正式發(fā)布! 更簡單地編寫和維護代碼

    C++ 17標準正式發(fā)布! 更簡單地編寫和維護代碼

    C++ 17 標準正式發(fā)布:終于能更簡單地編寫和維護代碼了!本文為大家介紹了C ++ 17 主要特性,感興趣的小伙伴們可以參考一下
    2017-12-12
  • 基于C語言實現簡單的12306火車售票系統

    基于C語言實現簡單的12306火車售票系統

    火車售票系統給我們的出行帶來了極大的方面,那么他基于編程是如何實現的呢?今天小編抽時間給大家分享一個使用C語言寫的一個簡單的火車票系統,感興趣的朋友參考下
    2016-09-09
  • C語言進階教程之字符函數&字符串函數

    C語言進階教程之字符函數&字符串函數

    C語言提供了豐富的字符串處理函數,可以對字符串進行輸入、輸出、合并、修改、比較、轉換、復制、搜索等操作,下面這篇文章主要給大家介紹了關于C語言進階教程之字符函數&字符串函數的相關資料,需要的朋友可以參考下
    2022-03-03
  • 深入解析C++編程中范圍解析運算符的作用及使用

    深入解析C++編程中范圍解析運算符的作用及使用

    這篇文章主要介紹了C++編程中范圍解析運算符的使用方法,是C++入門學習中的基礎知識,需要的朋友可以參考下
    2016-01-01

最新評論

偃师市| 新蔡县| 武山县| 三亚市| 弋阳县| 北川| 明水县| 宾阳县| 会理县| 楚雄市| 遵义市| 云安县| 广宁县| 横山县| 高陵县| 措勤县| 永胜县| 澄迈县| 津市市| 枣强县| 平凉市| 那坡县| 桐柏县| 梨树县| 壶关县| 兴义市| 巩义市| 威海市| 乐亭县| 白银市| 武汉市| 松潘县| 赤峰市| 普安县| 萝北县| 云南省| 兴城市| 湘潭市| 阿拉尔市| 重庆市| 郎溪县|