chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

C++之類(lèi)型轉(zhuǎn)換函數(shù)詳解

電子設(shè)計(jì) ? 來(lái)源:電子設(shè)計(jì) ? 作者:電子設(shè)計(jì) ? 2020-12-24 15:31 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、轉(zhuǎn)換構(gòu)造函數(shù)的學(xué)習(xí):

1、回憶數(shù)據(jù)類(lèi)型轉(zhuǎn)換:

在平時(shí)寫(xiě)代碼的時(shí)候,最怕的就是那種隱式數(shù)據(jù)類(lèi)型轉(zhuǎn)換了,一不小心,軟件就bug不斷;而顯示數(shù)據(jù)類(lèi)型(一般是程序自己去強(qiáng)制類(lèi)型轉(zhuǎn)換,這個(gè)是我們能夠明顯的識(shí)別和掌控的)。為此我們這里總結(jié)了一副隱式類(lèi)型轉(zhuǎn)換的圖:

下面我們來(lái)幾個(gè)隱式轉(zhuǎn)換的例子:

代碼版本一:

#include <iostream>
#include <string>
int main()

short s ='a';
unsigned int ui = 100;
int i = -200;
double d = i;
std::cout<<"d =" << d <<std::endl;
std::cout<<"ui= "<<ui<<std::endl;
if((ui+i)>0)

std::cout<<"Postive"<<std::endl;

else

std::cout<<"Negative"<<std::endl;

return 0;

輸出結(jié)果:

root@txp-virtual-machine:/home/txp# ./a.out
d =-200
ui= 100
Postive

注解:這里我們明顯發(fā)現(xiàn)(-200+100)還是大于0,這顯然不符合正常人的思維了;所以我們仔細(xì)分析一下,發(fā)現(xiàn)這里肯定是進(jìn)行了隱式轉(zhuǎn)換了,為此我們?cè)偌右粭l語(yǔ)句看看(ui+i)的值到底是多少:

代碼版本二:

#include <iostream>
#include <string>
int main()

short s ='a';
unsigned int ui = 100;
int i = -200;
double d = i;
std::cout<<"d =" << d <<std::endl;
std::cout<<"ui= "<<ui<<std::endl;
if((ui+i)>0)

std::cout<<"(ui+i) = "<<ui+i<<std::endl;
std::cout<<"Postive"<<std::endl;

else

std::cout<<"Negative"<<std::endl;

return 0;

輸出結(jié)果:

root@txp-virtual-machine:/home/txp# ./a.out
d =-200
ui= 100
(ui+i) = 4294967196
Postive

注解:通過(guò)打?。╱i+i)的值我們發(fā)現(xiàn),i原本是int數(shù)據(jù)類(lèi)型,這里隱式轉(zhuǎn)換成無(wú)符號(hào)的數(shù)據(jù)類(lèi)型了

為了讓大家更加理解隱式的轉(zhuǎn)換,我們下面再來(lái)一個(gè)例子:

代碼版本三:

#include <iostream>
#include <string>
int main()

short s ='a';
unsigned int ui = 100;
int i = -200;
double d = i;
std::cout<<"d =" << d <<std::endl;
std::cout<<"ui= "<<ui<<std::endl;
if((ui+i)>0)

std::cout<<"(ui+i) = "<<ui+i<<std::endl;
std::cout<<"Postive"<<std::endl;

else

std::cout<<"Negative"<<std::endl;

std::cout<<"sizeof(s+'b') = "<<sizeof(s+'b')<<std::endl;
return 0;

輸出結(jié)果:

root@txp-virtual-machine:/home/txp# g++ test.cpp
root@txp-virtual-machine:/home/txp# ./a.out
d =-200
ui= 100
(ui+i) = 4294967196
Postive
sizeof(s+'b') = 4

注解:這里我們發(fā)現(xiàn)sizeof出來(lái)的內(nèi)存大小是4個(gè)字節(jié)大??;其實(shí)這里編譯器把short和char類(lèi)型的都轉(zhuǎn)換int類(lèi)型了,所以最終兩個(gè)int數(shù)據(jù)相加,所占的內(nèi)存大小就是int類(lèi)型了。

所以咋們平時(shí)在寫(xiě)代碼的時(shí)候,腦袋里面要有這種寫(xiě)代碼謹(jǐn)慎的思維,防止出現(xiàn)這種隱式轉(zhuǎn)換的情況出現(xiàn),養(yǎng)成寫(xiě)代碼的好習(xí)慣

2、普通類(lèi)型與類(lèi)類(lèi)型之間能否進(jìn)行類(lèi)型轉(zhuǎn)換,類(lèi)類(lèi)型之間又是否能夠類(lèi)型轉(zhuǎn)換呢?

為了說(shuō)明這些問(wèn)題,咋們通過(guò)實(shí)際的代碼測(cè)試來(lái)看看啥情況:

代碼:普通類(lèi)型轉(zhuǎn)換成類(lèi)類(lèi)型

#include <iostream>
#include <string>
class Test{
public:
Test()


Test(int i)


};
int main()

Test t;
t =6; 從 C 語(yǔ)言角度,這里將 5 強(qiáng)制類(lèi)型轉(zhuǎn)換到 Test 類(lèi)型,只不過(guò)編譯器 在這里做了隱式類(lèi)型轉(zhuǎn)換
return 0;

輸出結(jié)果(顯示可以編譯通過(guò))

root@txp-virtual-machine:/home/txp# g++ test.cpp
root@txp-virtual-machine:/home/txp# ./a.out

代碼類(lèi)類(lèi)型轉(zhuǎn)換為普通類(lèi)型

#include <iostream>
#include <string>
class Test{
public:
Test()


Test(int i)


};
int main()

Test t;
int i = t;
return 0;

輸出結(jié)果(沒(méi)有編譯通過(guò))

root@txp-virtual-machine:/home/txp# g++ test.cpp
test.cpp: In function ‘int main()’:
test.cpp:21:14: error: cannot convert ‘Test’ to ‘int’ in initialization
int i = t;

代碼類(lèi)類(lèi)型與類(lèi)類(lèi)型之間的轉(zhuǎn)換:

#include <iostream>
#include <string>
class Value{
};
class Test{
public:
Test()


Test(int i)


};
int main()

Test t;
Value i;
t=i;
return 0;

輸出結(jié)果(暫時(shí)還是不行,編譯不通過(guò)):

root@txp-virtual-machine:/home/txp# g++ test.cpp
test.cpp: In function ‘int main()’:
test.cpp:27:7: error: no match for ‘operator=’ (operand types are ‘Test’ and ‘Value’)
t=i;

test.cpp:27:7: note: candidate is:
test.cpp:9:7: note: Test& Test::operator=(const Test&)
class Test{

test.cpp:9:7: note: no known conversion for argument 1 from ‘Value’ to ‘const Test&’

說(shuō)明:上面的例子,我們只是簡(jiǎn)單的按照實(shí)際角度出發(fā),發(fā)現(xiàn)確實(shí)有寫(xiě)轉(zhuǎn)換行不通。那么真理到底是怎樣的?我們接著往下看

審核編輯:符乾江
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 可編程邏輯
    +關(guān)注

    關(guān)注

    7

    文章

    526

    瀏覽量

    45295
  • C++
    C++
    +關(guān)注

    關(guān)注

    22

    文章

    2121

    瀏覽量

    76685
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    C語(yǔ)言自動(dòng)類(lèi)型轉(zhuǎn)換

    一、自動(dòng)類(lèi)型轉(zhuǎn)換 數(shù)據(jù)類(lèi)型存在自動(dòng)轉(zhuǎn)換的情況. 自動(dòng)轉(zhuǎn)換發(fā)生在不同數(shù)據(jù)類(lèi)型運(yùn)算時(shí),在編譯的時(shí)候
    發(fā)表于 11-25 08:04

    C語(yǔ)言強(qiáng)制類(lèi)型轉(zhuǎn)換

    強(qiáng)制類(lèi)型轉(zhuǎn)換是通過(guò)定義類(lèi)型轉(zhuǎn)換運(yùn)算來(lái)實(shí)現(xiàn)的。其一般形式為: (數(shù)據(jù)類(lèi)型) (表達(dá)式) 其作用是把表達(dá)式的運(yùn)算結(jié)果強(qiáng)制
    發(fā)表于 11-24 06:32

    C/C++代碼靜態(tài)測(cè)試工具Perforce QAC 2025.3的新特性

    ?Perforce Validate?中?QAC?項(xiàng)目的相對(duì)/根路徑的支持。C++?分析也得到了增強(qiáng),增加了用于檢測(cè) C++?并發(fā)問(wèn)題的新檢查,并改進(jìn)了實(shí)體名稱(chēng)和實(shí)
    的頭像 發(fā)表于 10-13 18:11 ?313次閱讀
    <b class='flag-5'>C</b>/<b class='flag-5'>C++</b>代碼靜態(tài)測(cè)試工具Perforce QAC 2025.3的新特性

    技能+1!如何在樹(shù)莓派上使用C++控制GPIO?

    在使用樹(shù)莓派時(shí),你會(huì)發(fā)現(xiàn)Python和Scratch是許多任務(wù)(包括GPIO編程)中最常用的編程語(yǔ)言。但你知道嗎,你也可以使用C++進(jìn)行GPIO編程,而且這樣做還有不少好處。借助WiringPi
    的頭像 發(fā)表于 08-06 15:33 ?3542次閱讀
    技能+1!如何在樹(shù)莓派上使用<b class='flag-5'>C++</b>控制GPIO?

    詳解hal_entry入口函數(shù)

    當(dāng)使用RTOS時(shí),程序從main函數(shù)開(kāi)始進(jìn)行線(xiàn)程調(diào)度;當(dāng)沒(méi)有使用RTOS時(shí),C語(yǔ)言程序的入口函數(shù)main函數(shù)調(diào)用了hal_entry函數(shù)。由
    的頭像 發(fā)表于 07-25 15:34 ?1645次閱讀

    基于LockAI視覺(jué)識(shí)別模塊:C++目標(biāo)檢測(cè)

    本文檔基于瑞芯微RV1106的LockAI凌智視覺(jué)識(shí)別模塊,通過(guò)C++語(yǔ)言做的目標(biāo)檢測(cè)實(shí)驗(yàn)。本文檔展示了如何使用lockzhiner_vision_module::PaddleDet類(lèi)進(jìn)行目標(biāo)檢測(cè),并通過(guò)lockzhiner_vision_module::Visualize函數(shù)
    的頭像 發(fā)表于 06-06 13:56 ?594次閱讀
    基于LockAI視覺(jué)識(shí)別模塊:<b class='flag-5'>C++</b>目標(biāo)檢測(cè)

    主流的 MCU 開(kāi)發(fā)語(yǔ)言為什么是 C 而不是 C++?

    在單片機(jī)的地界兒里,C語(yǔ)言穩(wěn)坐中軍帳,C++想分杯羹?難嘍。咱電子工程師天天跟那針尖大的內(nèi)存空間較勁,C++那些花里胡哨的玩意兒,在這兒真玩不轉(zhuǎn)。先說(shuō)內(nèi)存這道坎兒。您當(dāng)stm32f4的256kRAM
    的頭像 發(fā)表于 05-21 10:33 ?768次閱讀
    主流的 MCU 開(kāi)發(fā)語(yǔ)言為什么是 <b class='flag-5'>C</b> 而不是 <b class='flag-5'>C++</b>?

    為什么無(wú)法在運(yùn)行時(shí)C++推理中讀取OpenVINO?模型?

    使用模型優(yōu)化器 2021.1 版OpenVINO?轉(zhuǎn)換模型 使用 Runtime 2022.3 版本在 C++ 推理實(shí)現(xiàn) ( core.read_model()) 中讀取模型OpenVINO?并
    發(fā)表于 03-05 06:17

    labview數(shù)據(jù)類(lèi)型與PLC 數(shù)據(jù)類(lèi)型之間的轉(zhuǎn)換(來(lái)自于寫(xiě)入浮點(diǎn)數(shù)到匯川 PLC中的數(shù)據(jù)轉(zhuǎn)換關(guān)鍵的修改)

    本帖最后由 ironflag 于 2025-6-26 21:09 編輯 Labview通過(guò)Modbus庫(kù)函數(shù),寫(xiě)入浮點(diǎn)數(shù)到匯川PLC,正常操作如下: 1、將labview浮點(diǎn)數(shù),強(qiáng)制轉(zhuǎn)換
    發(fā)表于 02-24 19:01

    基于OpenHarmony標(biāo)準(zhǔn)系統(tǒng)的C++公共基礎(chǔ)類(lèi)庫(kù)案例:ThreadPoll

    1、程序簡(jiǎn)介該程序是基于OpenHarmony標(biāo)準(zhǔn)系統(tǒng)的C++公共基礎(chǔ)類(lèi)庫(kù)的線(xiàn)程池處理:ThreadPoll。本案例完成如下工作:創(chuàng)建1個(gè)線(xiàn)程池,設(shè)置該線(xiàn)程池內(nèi)部有1024個(gè)線(xiàn)程空間。啟動(dòng)5個(gè)線(xiàn)程
    的頭像 發(fā)表于 02-10 18:09 ?592次閱讀
    基于OpenHarmony標(biāo)準(zhǔn)系統(tǒng)的<b class='flag-5'>C++</b>公共基礎(chǔ)類(lèi)庫(kù)案例:ThreadPoll

    西門(mén)子TIA Portal中函數(shù)FC和函數(shù)塊FB的相互轉(zhuǎn)換

    描述 本文將介紹在西門(mén)子 TIA Portal 中使用 Add-In 插件實(shí)現(xiàn)函數(shù) FC 和函數(shù)塊 FB 的相互轉(zhuǎn)換的方法和步驟。 第1步: 添加 PLC 設(shè)備。 選擇西門(mén)子 CPU 1214
    的頭像 發(fā)表于 01-15 10:07 ?3008次閱讀
    西門(mén)子TIA Portal中<b class='flag-5'>函數(shù)</b>FC和<b class='flag-5'>函數(shù)</b>塊FB的相互<b class='flag-5'>轉(zhuǎn)換</b>

    Spire.XLS for C++組件說(shuō)明

    開(kāi)發(fā)人員可以快速地在 C++ 平臺(tái)上完成對(duì) Excel 的各種編程操作,如根據(jù)模板創(chuàng)建新的 Excel 文檔,編輯現(xiàn)有 Excel 文檔,以及對(duì) Excel 文檔進(jìn)行轉(zhuǎn)換。 Spire.XLS
    的頭像 發(fā)表于 01-14 09:40 ?1289次閱讀
    Spire.XLS for <b class='flag-5'>C++</b>組件說(shuō)明

    EE-112:模擬C++中的類(lèi)實(shí)現(xiàn)

    電子發(fā)燒友網(wǎng)站提供《EE-112:模擬C++中的類(lèi)實(shí)現(xiàn).pdf》資料免費(fèi)下載
    發(fā)表于 01-03 15:15 ?0次下載
    EE-112:模擬<b class='flag-5'>C++</b>中的類(lèi)實(shí)現(xiàn)

    AKI跨語(yǔ)言調(diào)用庫(kù)神助攻C/C++代碼遷移至HarmonyOS NEXT

    /C++代碼快速遷移至HarmonyOS NEXT。憑借卓越的兼容性,AKI已成為廠商與開(kāi)發(fā)者打造鴻蒙原生應(yīng)用過(guò)程中廣泛使用的跨語(yǔ)言調(diào)用解決方案。 AKI是一款專(zhuān)為鴻蒙原生開(kāi)發(fā)設(shè)計(jì)的FFI(外部函數(shù)接口
    發(fā)表于 01-02 17:08

    運(yùn)動(dòng)控制卡周期上報(bào)實(shí)時(shí)數(shù)據(jù)IO狀態(tài)之C++

    使用C++進(jìn)行運(yùn)動(dòng)控制卡的周期上報(bào)功能實(shí)現(xiàn)
    的頭像 發(fā)表于 12-17 13:59 ?1506次閱讀
    運(yùn)動(dòng)控制卡周期上報(bào)實(shí)時(shí)數(shù)據(jù)IO狀態(tài)之<b class='flag-5'>C++</b>篇