精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

c++ 之布爾類型和引用的學習總結

電子設計 ? 來源:電子設計 ? 作者:電子設計 ? 2020-12-24 18:03 ? 次閱讀

一、布爾數據類型:

c語言里面我們知道是沒有布爾數據類型的,而在C++中添加了布爾數據類型(bool),它的取值是:true或者false(也就是1或者0),在內存大小上它占用一個字節大小:

1、bool類型只有true(非0)和false(0)兩個值。

2、C++編譯器會將非0值轉換為true,0值轉換為false。

#include <stdio.h>

int main(int argc, char *argv[])

bool b = false;

int a = b;

printf("sizeof(b) = %d", sizeof(b));

printf("b = %d, a = %d", b, a);

b = 3;

a = b;

printf("b = %d, a = %d", b, a);

b = -5;

a = b;

printf("b = %d, a = %d", b, a);

a = 10;

b = a;

printf("a = %d, b = %d", a, b);

a = 0;

b = a;

printf("a = %d, b = %d", a, b);

return 0;

演示結果:

root@txp:/home/txp# ./a.out

sizeof(b) = 1

b = 0, a = 0

b = 1, a = 1

b = 1, a = 1

a = 10, b = 1

a = 0, b = 0

2、C++中的三目運算符:

對三目運算符,想必大家都再熟悉不過了,不過在c++中的三目運算符的用法就比c語言更加高級了,來先看一個示例:

int a = 1;

int b = 2;

( a < b) ? a : b = 3;

printf("a=%d,b=%d",a,b);

上面的三目運算符語句看起來怎么有點奇怪,它作為左值了,一般在c語言里面它應該是作為右值賦值給一個變量的,那這樣寫在c++中有沒有錯誤,答案肯定是沒有錯的,我們還是來看一下這種寫法在c語言中報了啥錯誤:

root@txp:/home/txp# gcc test.c

test.c: In function ‘main’:

test.c:7:21: error: lvalue required as left operand of assignment

( a < b) ? a : b = 3;

這里我們可以發現它不能做為左值來對它進行賦值,而我們在c++編譯器里面來編譯,很明顯它是沒有錯誤的,行的通,那我們再來修改一下:

#include <stdio.h>

int main(void)

int a = 1;

int b = 2;

( a < b) ? a : 4 = 3;

printf("a=%d,b=%d",a,b);

編譯結果(這個錯誤和在c語言里面一樣,注意這里我是在C++編譯器里面編譯,只是把三目運算符里面修改了一下。):

root@txp:/home/txp# g++ test1.cpp

test1.cpp: In function ‘int main()’:

test1.cpp:7:23: error: lvalue required as left operand of assignment

( a < b) ? a : 4 = 3;

小結:

1、c語言里面的三目運算符返回的是變量值,它不能作為左值來使用。

2、c++中的三目運算符可以直接返回變量本身,既可以作為右值使用,也可以作為左值來使用。

3、c++中的三目運算符可能返回的值中如果有一個是常量值,則不能作為左值進行使用,這點要切記和理解。

二、C++中的引用:

1、引用的概念:

--引用可以看作一個已定義變量的別名

--引用的語法:Type &name = var;這里舉個簡單的示例:

int a =4;

int& b =a; //b為a的別名

b = 5;//操作b就是操作a

--注意普通引用在定義時必須用同類型的變量進行初始化。

下面是demo演示:

#include <stdio.h>

int main(int argc, char *argv[])

int a = 4;

int& b = a;

b = 5;

printf("a = %d", a);

printf("b = %d", b);

printf("&a = %p", &a);

printf("&b = %p", &b);

return 0;

演示結果:

root@txp:/home/txp# ./a.out

a = 5

b = 5

&a = 0x7fff408ffdec

&b = 0x7fff408ffdec

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

    關注

    7

    文章

    514

    瀏覽量

    44074
  • C++
    C++
    +關注

    關注

    22

    文章

    2104

    瀏覽量

    73504
收藏 人收藏

    評論

    相關推薦

    C7000 C/C++優化指南用戶手冊

    電子發燒友網站提供《C7000 C/C++優化指南用戶手冊.pdf》資料免費下載
    發表于 11-09 15:00 ?0次下載
    <b class='flag-5'>C</b>7000 <b class='flag-5'>C</b>/<b class='flag-5'>C++</b>優化指南用戶手冊

    TMS320C6000優化C/C++編譯器v8.3.x

    電子發燒友網站提供《TMS320C6000優化C/C++編譯器v8.3.x.pdf》資料免費下載
    發表于 11-01 09:35 ?0次下載
    TMS320<b class='flag-5'>C</b>6000優化<b class='flag-5'>C</b>/<b class='flag-5'>C++</b>編譯器v8.3.x

    C語言和C++中結構體的區別

    同樣是結構體,看看在C語言和C++中有什么區別?
    的頭像 發表于 10-30 15:11 ?150次閱讀

    C7000優化C/C++編譯器

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

    鴻蒙原生應用元服務開發-倉頡基礎數據類型布爾類型

    布爾類型使用Bool 表示,用來表示邏輯中的真和假。 布爾類型字面量 布爾類型只有兩個字面量:t
    發表于 09-09 09:57

    OpenVINO2024 C++推理使用技巧

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

    C++語言基礎知識

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

    C++中實現類似instanceof的方法

    C++有多態與繼承,但是很多人開始學習C++,有時候會面臨一個常見問題,就是如何向下轉型,特別是不知道具體類型的時候,這個時候就希望C++
    的頭像 發表于 07-18 10:16 ?541次閱讀
    <b class='flag-5'>C++</b>中實現類似instanceof的方法

    鴻蒙OS開發實例:【Native C++

    使用DevEco Studio創建一個Native C++應用。應用采用Native C++模板,實現使用NAPI調用C標準庫的功能。使用C標準庫hypot接口計算兩個給定數平方和的平
    的頭像 發表于 04-14 11:43 ?2521次閱讀
    鴻蒙OS開發實例:【Native <b class='flag-5'>C++</b>】

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

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

    c語言,c++,java,python區別

    操作系統、嵌入式系統等對性能要求較高的場景。C語言的語法相對簡單,學習曲線較平緩,也是學習其他高級語言的入門語言。 C++C++是在
    的頭像 發表于 02-05 14:11 ?2262次閱讀

    vb語言和c++語言的區別

    Microsoft開發的一種面向對象的事件驅動編程語言。它的設計目標是簡化編程過程,讓初學者也能快速上手。與相比,C++語言是一種通用的、面向對象的編程語言,其設計目標是提供高性能的系統級編程。 語法: VB語言的語法較為簡單,使用了很多可讀性強的關鍵詞,如“
    的頭像 發表于 02-01 10:20 ?2084次閱讀

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

    MISRA C++:2023,MISRA? C++ 標準的下一個版本,來了!為了幫助您做好準備,我們介紹了 Perforce 首席技術支持工程師 Frank van den Beuken 博士撰寫
    的頭像 發表于 01-11 09:00 ?544次閱讀
    <b class='flag-5'>C++</b>簡史:<b class='flag-5'>C++</b>是如何開始的

    C語言和C++中那些不同的地方

    C語言雖說經常和C++在一起被大家提起,但可千萬不要以為它們是一個東西。現在我們常用的C語言是C89標準,C++
    的頭像 發表于 12-07 14:29 ?918次閱讀
    <b class='flag-5'>C</b>語言和<b class='flag-5'>C++</b>中那些不同的地方

    vlookup絕對引用和相對引用的區別

    絕對引用和相對引用是在Excel中使用VLOOKUP函數時的兩種引用方式,它們的主要區別在于在填充公式時,引用的單元格地址是否會發生改變。 相對引用
    的頭像 發表于 12-01 10:27 ?3617次閱讀