色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

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

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

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

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

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,這顯然不符合正常人的思維了;所以我們仔細(xì)分析一下,發(fā)現(xiàn)這里肯定是進(jì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類型了。

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

2、普通類型與類類型之間能否進(jìn)行類型轉(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)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 可編程邏輯
    +關(guān)注

    關(guān)注

    7

    文章

    515

    瀏覽量

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

    關(guān)注

    22

    文章

    2110

    瀏覽量

    73687
收藏 人收藏

    評論

    相關(guān)推薦

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

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

    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 ?395次閱讀

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

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

    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>編譯器

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

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

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

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

    OpenCV圖像識別C++代碼

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

    FX2 CY7C68013A如何在C++環(huán)境中使用LoadEEPROM函數(shù)

    我使用的是 FX2 CY7C68013A 芯片。 我知道 CyUSB.NET 庫中有我需要的 LoadEEPROM 函數(shù)。 請問如何在 C++ 環(huán)境而不是 C#/CLR 環(huán)境中使用該
    發(fā)表于 05-31 06:59

    鴻蒙OS開發(fā)實例:【Native C++

    使用DevEco Studio創(chuàng)建一個Native C++應(yīng)用。應(yīng)用采用Native C++模板,實現(xiàn)使用NAPI調(diào)用C標(biāo)準(zhǔn)庫的功能。使用C標(biāo)準(zhǔn)庫hypot接口計算兩個給定數(shù)平方和的平
    的頭像 發(fā)表于 04-14 11:43 ?2667次閱讀
    鴻蒙OS開發(fā)實例:【Native <b class='flag-5'>C++</b>】

    使用 MISRA C++:2023? 避免基于范圍的 for 循環(huán)中的錯誤

    在前兩篇博客中,我們?向您介紹了新的 MISRA C++ 標(biāo)準(zhǔn)?和?C++ 的歷史?。在這篇博客中,我們將仔細(xì)研究以 C++ 中?for?循環(huán)為中心的特定規(guī)則。
    的頭像 發(fā)表于 03-28 13:53 ?815次閱讀
    使用 MISRA <b class='flag-5'>C++</b>:2023? 避免基于范圍的 for 循環(huán)中的錯誤

    C語言數(shù)據(jù)類型有哪些

    C 語言中,數(shù)據(jù)類型指的是用于聲明不同類型的變量或函數(shù)的一個廣泛的系統(tǒng)。變量的類型決定了變量存儲占用的空間,以及如何解釋存儲的位模式。
    發(fā)表于 03-20 10:56 ?487次閱讀
    <b class='flag-5'>C</b>語言數(shù)據(jù)<b class='flag-5'>類型</b>有哪些

    C語言如何掌握強制類型轉(zhuǎn)換的精髓

    強制類型轉(zhuǎn)換是把變量從一種類型轉(zhuǎn)換為另一種數(shù)據(jù)類型。例如,如果您想存儲一個 long 類型的值到
    的頭像 發(fā)表于 02-26 11:00 ?525次閱讀
    <b class='flag-5'>C</b>語言如何掌握強制<b class='flag-5'>類型</b><b class='flag-5'>轉(zhuǎn)換</b>的精髓

    c語言,c++,java,python區(qū)別

    C語言、C++、Java和Python是四種常見的編程語言,各有優(yōu)點和特點。 C語言: C語言是一種面向過程的編程語言。它具有底層的特性,能夠?qū)τ嬎銠C硬件進(jìn)行直接操作。
    的頭像 發(fā)表于 02-05 14:11 ?2429次閱讀

    C++簡史:C++是如何開始的

    MISRA C++:2023,MISRA? C++ 標(biāo)準(zhǔn)的下一個版本,來了!為了幫助您做好準(zhǔn)備,我們介紹了 Perforce 首席技術(shù)支持工程師 Frank van den Beuken 博士撰寫
    的頭像 發(fā)表于 01-11 09:00 ?616次閱讀
    <b class='flag-5'>C++</b>簡史:<b class='flag-5'>C++</b>是如何開始的
    主站蜘蛛池模板: 粗壮挺进邻居人妻无码| 97成人免费视频| 一个人的免费高清影院| 国产精品99久久久久久WWW| 亚洲精品视频区| 俄罗斯黄色大片| 果冻传媒2021精品影视| 少妇无套内谢久久久久| 成人免费在线观看视频| 欧美一区二区影院| 窝窝午夜色视频国产精品东北| www.色小姐| 欧美午夜a级精美理论片| 97精品视频在线观看| 免费中文字幕视频| 99热国产这里只有精品9九| 国产精品国产三级国产an| 色狠狠色综合吹潮| 国产成人aaa在线视频免费观看| 日日摸夜夜添无码AVA片| 国产产乱码一二三区别免费| 午夜国产高清精品一区免费| 国产人妻人伦精品A区| 亚洲国产精品无码中文字幕 | 2019香蕉在线观看直播视频| 老年日本老年daddy| 2023国产精品一卡2卡三卡4卡| 国产精品高清m3u8在线播放| 无码专区aaaaaa免费视频| 国产无遮挡色视频免费观看性色 | 再插深点嗯好大好爽| 久久亚洲伊人| mdapptv麻豆下载| 四虎影视国产精品亚洲精品hd| 99久久蜜臀AV免费看蛮| 全黄H全肉细节文短篇| 成年人视频在线观看免费| 乌克兰内射私拍| 久久成人免费观看全部免费| 亚洲精品AV一二三区无码| 久久精品电影|