女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

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

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

電子設(shè)計 ? 來源:電子設(shè)計 ? 作者:電子設(shè)計 ? 2020-12-24 15:31 ? 次閱讀

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

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

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

下面我們來幾個隱式轉(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,這顯然不符合正常人的思維了;所以我們仔細分析一下,發(fā)現(xiàn)這里肯定是進行了隱式轉(zhuǎn)換了,為此我們再加一條語句看看(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

注解:通過打印(ui+i)的值我們發(fā)現(xiàn),i原本是int數(shù)據(jù)類型,這里隱式轉(zhuǎn)換成無符號的數(shù)據(jù)類型了

為了讓大家更加理解隱式的轉(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<<"(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出來的內(nèi)存大小是4個字節(jié)大小;其實這里編譯器把short和char類型的都轉(zhuǎn)換int類型了,所以最終兩個int數(shù)據(jù)相加,所占的內(nèi)存大小就是int類型了。

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

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

為了說明這些問題,咋們通過實際的代碼測試來看看啥情況:

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

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


Test(int i)


};
int main()

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

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

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

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

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


Test(int i)


};
int main()

Test t;
int i = t;
return 0;

輸出結(jié)果(沒有編譯通過)

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;

代碼類類型與類類型之間的轉(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é)果(暫時還是不行,編譯不通過):

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&’

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

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

    關(guān)注

    7

    文章

    526

    瀏覽量

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

    關(guān)注

    22

    文章

    2117

    瀏覽量

    74779
收藏 人收藏

    評論

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

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

    描述 本文將介紹在西門子 TIA Portal 中使用 Add-In 插件實現(xiàn)函數(shù) FC 和函數(shù)塊 FB 的相互轉(zhuǎn)換的方法和步驟。 第1步: 添加 PLC 設(shè)備。 選擇西門子 CPU 1214
    的頭像 發(fā)表于 01-15 10:07 ?1644次閱讀
    西門子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++組件說明

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

    同樣是函數(shù),在CC++中有什么區(qū)別

    同樣是函數(shù),在 CC++ 中有什么區(qū)別? 第一個返回值。 C語言的函數(shù)可以不寫返回值類型
    的頭像 發(fā)表于 11-29 10:25 ?793次閱讀

    ADS1299EEGFE-PDK在window上如何通過C++讀取8通道數(shù)據(jù)?

    入手了一塊ADS1299EEGFE-PDK,想用這塊板做eeg測試,開發(fā)語言是c++,window平臺,這塊板沒有提供sdk之類的,怎么獲取8個通道的數(shù)據(jù),有沒有做過的朋友?
    發(fā)表于 11-27 06:51

    C++新手容易犯的十個編程錯誤

    簡單的總結(jié)一下?C++ 新手容易犯的一些編程錯誤,給新人們提供一個參考。 1 有些關(guān)鍵字在 cpp 文件中多寫了 對于 C++ 類,一些關(guān)鍵字只要寫在 .h 中就好,cpp 中就不用再加上了,比如
    的頭像 發(fā)表于 11-15 12:42 ?914次閱讀

    C語言和C++中結(jié)構(gòu)體的區(qū)別

    同樣是結(jié)構(gòu)體,看看在C語言和C++中有什么區(qū)別?
    的頭像 發(fā)表于 10-30 15:11 ?660次閱讀

    C7000優(yōu)化C/C++編譯器

    電子發(fā)燒友網(wǎng)站提供《C7000優(yōu)化C/C++編譯器.pdf》資料免費下載
    發(fā)表于 10-30 09:45 ?0次下載
    <b class='flag-5'>C</b>7000優(yōu)化<b class='flag-5'>C</b>/<b class='flag-5'>C++</b>編譯器

    怎么由系統(tǒng)函數(shù)判斷濾波器的類型

    在信號處理領(lǐng)域,濾波器是一種非常重要的工具,用于從信號中提取或抑制某些頻率成分。濾波器的類型很多,包括低通濾波器、高通濾波器、帶通濾波器、帶阻濾波器等。不同類型的濾波器具有不同的頻率響應(yīng)特性,適用于
    的頭像 發(fā)表于 08-15 10:30 ?4012次閱讀

    OpenVINO2024 C++推理使用技巧

    很多人都使用OpenVINO新版的C++ 或者Python的SDK,都覺得非常好用,OpenVINO2022之后的版本C++ SDK做了大量的優(yōu)化與整理,已經(jīng)是非常貼近開發(fā)的使用習慣與推理方式。與OpenCV的Mat對象對接方式更是幾乎無縫對接,非常的方便好用。
    的頭像 發(fā)表于 07-26 09:20 ?1435次閱讀

    c++編譯后鏈接失敗的原因?如何解決?

    /c++項目,將剛才新建的項目轉(zhuǎn)換c++項目。 完成后點擊編譯,此時也是正常的。 新建一個cpp文件,將原項目的main.c中內(nèi)容全部拷貝到新建的cpp文件中保存,然后刪除原main
    發(fā)表于 07-25 08:13

    ModusToolbox 3.2在c代碼中包含c++代碼的正確步驟是什么?

    使用 ModusToolbox 3.2 我有一個用純 C 語言編寫的 XMC4700 項目。 我正在嘗試添加一些 C++ 函數(shù),并將其合并到我的原始代碼中。 我可以構(gòu)建獨立的 .cpp/.hpp
    發(fā)表于 07-23 08:21

    C++語言基礎(chǔ)知識

    電子發(fā)燒友網(wǎng)站提供《C++語言基礎(chǔ)知識.pdf》資料免費下載
    發(fā)表于 07-19 10:58 ?8次下載

    C++中實現(xiàn)類似instanceof的方法

    函數(shù),可實際上C++中沒有。但是別著急,其實C++中有兩種簡單的方法可以實現(xiàn)類似Java中的instanceof的功能。 在 C++ 中,確定對象的
    的頭像 發(fā)表于 07-18 10:16 ?859次閱讀
    <b class='flag-5'>C++</b>中實現(xiàn)類似instanceof的方法

    OpenCV圖像識別C++代碼

    的頭文件 在您的C++代碼中,包含以下必要的頭文件: # include # include # include # include # include # include # include 讀取圖像
    的頭像 發(fā)表于 07-16 10:42 ?3869次閱讀

    Perforce靜態(tài)代碼分析專家解讀MISRA C++:2023?新標準:如何安全、高效地使用基于范圍的for循環(huán),防范未定義行

    的特定規(guī)則。 什么是MISRA C++:2023規(guī)則9.5.2,為什么它很重要? MISRA C++:2023 引入了規(guī)則 9.5.2 “for-range 初始值設(shè)定項最多應(yīng)包含一個函數(shù)調(diào)用”
    的頭像 發(fā)表于 06-18 12:57 ?689次閱讀