C++ Primer 5e 習題2.5: 指出如下字面量常量的類型

Exercise 2.5: Determine the type of each of the following literals. Explain
the differences among the literals in each of the four examples: (a) ‘a’, L’a’, “a”, L"a"
(b) 10, 10u, 10L, 10uL, 012, 0xC
? 3.14, 3.14f, 3.14L
(d) 10, 10u, 10., 10e-2

既然是C++11,那就使用用 std::is_same 在編譯期判斷類型。

  • 對于小白來說, 10. 會被誤以為是 float 類型,其實是 double
  • 對于 "a" 來說, 小白會以為是 const char* , 或 const char[2], 但其實是 const char(&)[2]
  • 「模板 + 宏,威力無窮」: show_type 模板函數, 搭配 __PRTTY_FUNCTION__ 獲取到了上述類型
#include <type_traits>
#include <iostream>template<typename T>
void show_type() {std::cout << __PRETTY_FUNCTION__ << "\n";
}int main()
{std::cout << std::boolalpha;// 'a' 的類型std::cout << std::is_same<decltype('a'), char>::value << std::endl;// L'a' 的類型std::cout << std::is_same<decltype(L'a'), wchar_t>::value << std::endl;// "a" 的類型std::cout << std::is_same<decltype("a"), const char[2]>::value << std::endl;show_type<decltype("a")>();  // 輸出實際類型std::cout << std::is_same<decltype("a"), const char(&)[2]>::value << std::endl;// L"a" 的類型std::cout << std::is_same<decltype(L"a"), const wchar_t(&)[2]>::value << std::endl;// 10 的類型std::cout << std::is_same<decltype(10), int>::value << std::endl;// 10u 的類型std::cout << std::is_same<decltype(10u), unsigned>::value << std::endl;// 10L 的類型std::cout << std::is_same<decltype(10L), long>::value << std::endl;// 10uL 的類型std::cout << std::is_same<decltype(10uL), unsigned long>::value << std::endl;// 012 的類型std::cout << std::is_same<decltype(012), int>::value << std::endl;// 0xC 的類型std::cout << std::is_same<decltype(0xC), int>::value << std::endl;// 3.14 的類型std::cout << std::is_same<decltype(3.14), double>::value << std::endl;// 3.14f 的類型std::cout << std::is_same<decltype(3.14f), float>::value << std::endl;// 3.14L 的類型std::cout << std::is_same<decltype(3.14L), long double>::value << std::endl;// 10 的類型std::cout << std::is_same<decltype(10), int>::value << std::endl;// 10u 的類型std::cout << std::is_same<decltype(10u), unsigned>::value << std::endl;// 10. 的類型std::cout << std::is_same<decltype(10.), double>::value << std::endl;// 10e-2std::cout << std::is_same<decltype(10.), double>::value << std::endl;return 0;
}

運行結果:

?  2.5 git:(2.1) ? g++ main.cpp -std=c++11
?  2.5 git:(2.1) ? ./a.out                
true
true
false
void show_type() [T = const char (&)[2]]
true
true
true
true
true
true
true
true
true
true
true
?  2.5 git:(2.1) ? g++ main.cpp -std=c++11
?  2.5 git:(2.1) ? ./a.out                
true
true
false
void show_type() [T = const char (&)[2]]
true
true
true
true
true
true
true
true
true
true
true
true
true
true
true

如何聲明數組的引用類型?

<type>(&var_name) [n] = array_var. 例如:

#include <type_traits>
#include <iostream>int main()
{std::cout << std::boolalpha;const char b[2] = "b";const char(&c)[2] = b;std::cout << std::is_same<decltype("a"), decltype(b)>::value << std::endl;std::cout << std::is_same<decltype("a"), decltype(c)>::value << std::endl;char d[2] = "d";char(&e)[2] = d;std::cout << "before:\n";std::cout << "d: " << d << std::endl;std::cout << "e: " << d << std::endl;e[0] = 'e';std::cout << "after:\n";std::cout << "d: " << d << std::endl;std::cout << "e: " << d << std::endl;return 0;
}

運行結果:

?  2.5 git:(2.1) ? g++ main.cpp -std=c++11
?  2.5 git:(2.1) ? ./a.out 
false
true
before:
d: d
e: d
after:
d: e
e: e

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/901111.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/901111.shtml
英文地址,請注明出處:http://en.pswp.cn/news/901111.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

CFS 調度器兩種調度類型普通調度 和 組調度

在 Linux 的 CFS&#xff08;Completely Fair Scheduler&#xff09; 調度器中&#xff0c;確實存在兩種調度類型&#xff1a;普通調度 和 組調度。這兩種調度類型分別適用于不同的場景&#xff0c;并通過三個關鍵維度&#xff08;權重、搶占優先級、最大配額&#xff09;來影響…

AF3 ProteinDataset類的_get_masked_sequence方法解讀

AlphaFold3 protein_dataset模塊 ProteinDataset 類 _get_masked_sequence 方法屬于作用是為需要預測的殘基生成掩碼。該掩碼以二進制張量形式呈現,其中 1 代表需要預測的部分,0 代表其他部分。此方法會依據多個參數來選定要掩碼的殘基,這些參數包含 mask_whole_chains、mas…

【音視頻】SDL渲染YUV格式像素

SDL視頻顯示的流程 實現流程 準備視頻文件 準備一個格式為yuv420p&#xff0c;分辨率為320x240的yuv數據&#xff0c;并且將視頻文件放入項目構建的目錄下&#xff1a; 初始化SDL 初始化SDL的視頻模塊 //初始化 SDL if(SDL_Init(SDL_INIT_VIDEO)) {fprintf( stderr, "…

關于群暉安裝tailscale后無法直鏈的問題

問題是我局域網的ipv6無法正確獲取到ip, 通過命令可以看到ipv6沒有ip tailscale netcheck C:\Users\Administrator>tailscale netcheck 2025/04/12 23:43:34 attempting to fetch a DERPMap from https://controlplane.tailscale.comReport:* Time: 2025-04-12T15:43:38.27…

[數據結構]Trie字典樹

GPT的介紹 &#x1f9e0; 一句話總結&#xff1a; 字典樹是一種專門用來存很多字符串的“超級前綴樹”&#xff0c;查找某個字符串或前綴的時候&#xff0c;特別快&#xff01; ?? 舉個生活例子&#xff08;類比&#xff09;&#xff1a; 你想做一個詞典&#xff08;Dictio…

04-算法打卡-數組-二分查找-leetcode(69)-第四天

1 題目地址 69. x 的平方根 - 力扣&#xff08;LeetCode&#xff09;69. x 的平方根 - 給你一個非負整數 x &#xff0c;計算并返回 x 的 算術平方根 。由于返回類型是整數&#xff0c;結果只保留 整數部分 &#xff0c;小數部分將被 舍去 。注意&#xff1a;不允許使用任何內…

AI領域再突破,永洪科技榮獲“2025人工智能+創新案例”獎

在2025年的今天&#xff0c;人工智能已從技術概念全面滲透至產業核心。中國作為全球AI技術應用的前沿陣地&#xff0c;正通過“人工智能”行動加速推進技術與實體經濟深度融合。 這一背景下&#xff0c;永洪科技憑借其“國內某頭部ICT人力資源板塊GenAI項目”榮獲“2025全國企業…

反序列化漏洞介紹與挖掘指南

目錄 反序列化漏洞介紹與挖掘指南 一、漏洞核心原理與危害 二、漏洞成因與常見場景 1. 漏洞根源 2. 高危場景 三、漏洞挖掘方法論 1. 靜態分析 2. 動態測試 3. 利用鏈構造 四、防御與修復策略 1. 代碼層防護 2. 架構優化 3. 運維實踐 五、工具與資源推薦 總結 反…

從零開始的C++編程 2(類和對象下)

目錄 1.構造函數初始化列表 2.類型轉換 3.static成員 4.友元 5.內部類 6.匿名對象 1.構造函數初始化列表 ①之前我們實現構造函數時&#xff0c;初始化成員變量主要使?函數體內賦值&#xff0c;構造函數初始化還有?種?式&#xff0c;就是初始化列表&#xff0c;初始化…

Profibus DP主站轉ModbusTCP網關通訊秘籍

Profibus DP主站轉ModbusTCP網關通訊秘籍 在現代工業自動化領域&#xff0c;不同設備間的數據通訊和系統集成至關重要。Profibus DP和Modbus TCP是兩種廣泛應用的工業通信協議&#xff0c;各有其獨特的優勢和適用場景。然而&#xff0c;由于歷史原因或設備制造商的差異&#x…

【力扣hot100題】(092)最長回文串

有點難度&#xff0c;一開始想到的兩種方法都不對&#xff0c;花了不少時間。 先說之前的方法&#xff1a; ① 遍歷每個點&#xff0c;每個點向外擴張&#xff0c;如果左等于右就一直擴展直到不等。 這個方法可是可以&#xff0c;但我沒有考慮到兩個相同字母也是回文串的情況…

14 - VDMA彩條顯示實驗

文章目錄 1 實驗任務2 系統框圖3 硬件設計4 軟件設計 1 實驗任務 本實驗任務是PS端寫彩條數據至DDR3內存中&#xff0c;然后通過PL端的VDMA IP核將彩條數據通過HDMI接口輸出顯示。 2 系統框圖 本實驗是用HDMI接口固定輸出1080P的彩條圖&#xff0c;所以&#xff1a; rgb2lc…

HarmonyOS-ArkUIV2裝飾器-@Param:組件外部輸入

上文我們了解了@Local裝飾器 ,講明了Local裝飾器不允許外部傳入值對其進行初始化。詳見: HarmonyOS-ArkUI V2裝飾器@Local裝飾器:組件內部狀態-CSDN博客。 但總有場景是需要外部組件傳值過來,然后本組件接收這個值這種場景的。而且很多情況下,一個狀態變量的作用范圍會是…

Java從入門到“放棄”(精通)之旅——運算符③

&#x1f31f;Java從入門到“放棄”&#xff08;精通&#xff09;之旅&#x1f680;&#xff1a;運算符深度解析 引言&#xff1a;運算符的本質與價值 作為Java語言的核心組成部分&#xff0c;運算符是構建程序邏輯的基礎元素。它們不僅僅是簡單的數學符號&#xff0c;更是程…

【sgSpliter】自定義組件:可調整寬度、高度、折疊的分割線

sgSpliter.vue <template><!-- 注意&#xff1a;父組件position必須是relative、absolute或fixed&#xff0c;不建議直接在綁定:data后面用"{屬性}"&#xff0c;建議單獨在script中聲明data&#xff0c;避免拖拽過程重復調用 --><div :class"$…

Ningx負載均衡

Ningx負載均衡 upstream(上游)配置負載均衡1、weight&#xff08;加權輪詢&#xff09;2、ip_hash&#xff08;負載均衡&#xff09;3、url hash負載均衡4、least_conn&#xff08;最小連接負載均衡&#xff09; upstream(上游)配置負載均衡 Nginx負載均衡 參考: nginx從安裝…

一個插件,免費使用所有頂級大模型(Deepseek,Gpt,Grok,Gemini)

DeepSider是一款集成于瀏覽器側邊欄的AI對話工具&#xff0c;可免費使用所有頂級大模型 包括GPT-4o&#xff0c;Grok3,Claude 3.5 Sonnet,Claude 3.7,Gemini 2.0&#xff0c;Deepseek R1滿血版等 以極簡交互與超快的響應速度&#xff0c;完成AI搜索、實時問答、內容創作、翻譯、…

眾趣科技丨數字孿生技術,賦能交通公共設施管理數字化升級

春節假期期間&#xff08;1 月 21 日至 2 月 4 日&#xff09;&#xff0c;作為中國春節申遺成功后的首個春運&#xff0c;交通出行格外火熱&#xff0c;全社會跨區域流動量超 23 億人次&#xff0c;這一數據創下了歷史新高。 面對如此龐大的客流量&#xff0c;傳統的交通管理方…

Linux 入門五:Makefile—— 從手動編譯到工程自動化的蛻變

一、概述&#xff1a;Makefile—— 工程編譯的 “智能指揮官” 1. 為什么需要 Makefile&#xff1f; 手動編譯的痛點&#xff1a;當工程包含數十個源文件時&#xff0c;每次修改都需重復輸入冗長的編譯命令&#xff08;如gcc file1.c file2.c -o app&#xff09;&#xff0c;…

Python-Django+vue二手電子設備交易平臺功能說明

?(^_-) 上千個精美定制模板,各類成品Java、Python、PHP、Android畢設項目,歡迎咨詢。 ?(^_-) 程序開發、技術解答、代碼講解、文檔,??文末獲取源碼+數據庫+文檔?? ??軟件下載 | 實戰案例 ??文章底部二維碼,可以聯系獲取軟件下載鏈接,及項目演示視頻。 本項目…