一、布爾數(shù)據(jù)類型:
在c語(yǔ)言里面我們知道是沒(méi)有布爾數(shù)據(jù)類型的,而在C++中添加了布爾數(shù)據(jù)類型(bool),它的取值是:true或者false(也就是1或者0),在內(nèi)存大小上它占用一個(gè)字節(jié)大小:
1、bool類型只有true(非0)和false(0)兩個(gè)值。
2、C++編譯器會(huì)將非0值轉(zhuǎn)換為true,0值轉(zhuǎn)換為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;
}
演示結(jié)果:
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++中的三目運(yùn)算符:
對(duì)三目運(yùn)算符,想必大家都再熟悉不過(guò)了,不過(guò)在c++中的三目運(yùn)算符的用法就比c語(yǔ)言更加高級(jí)了,來(lái)先看一個(gè)示例:
int a = 1;
int b = 2;
( a < b) ? a : b = 3;
printf("a=%d,b=%d",a,b);
上面的三目運(yùn)算符語(yǔ)句看起來(lái)怎么有點(diǎn)奇怪,它作為左值了,一般在c語(yǔ)言里面它應(yīng)該是作為右值賦值給一個(gè)變量的,那這樣寫(xiě)在c++中有沒(méi)有錯(cuò)誤,答案肯定是沒(méi)有錯(cuò)的,我們還是來(lái)看一下這種寫(xiě)法在c語(yǔ)言中報(bào)了啥錯(cuò)誤:
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;
這里我們可以發(fā)現(xiàn)它不能做為左值來(lái)對(duì)它進(jìn)行賦值,而我們?cè)赾++編譯器里面來(lái)編譯,很明顯它是沒(méi)有錯(cuò)誤的,行的通,那我們?cè)賮?lái)修改一下:
#include <stdio.h>
int main(void)
{
int a = 1;
int b = 2;
( a < b) ? a : 4 = 3;
printf("a=%d,b=%d",a,b);
}
編譯結(jié)果(這個(gè)錯(cuò)誤和在c語(yǔ)言里面一樣,注意這里我是在C++編譯器里面編譯,只是把三目運(yùn)算符里面修改了一下。):
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;
^
小結(jié):
1、c語(yǔ)言里面的三目運(yùn)算符返回的是變量值,它不能作為左值來(lái)使用。
2、c++中的三目運(yùn)算符可以直接返回變量本身,既可以作為右值使用,也可以作為左值來(lái)使用。
3、c++中的三目運(yùn)算符可能返回的值中如果有一個(gè)是常量值,則不能作為左值進(jìn)行使用,這點(diǎn)要切記和理解。
二、C++中的引用:
1、引用的概念:
--引用可以看作一個(gè)已定義變量的別名
--引用的語(yǔ)法:Type &name = var;這里舉個(gè)簡(jiǎn)單的示例:
int a =4;
int& b =a; //b為a的別名
b = 5;//操作b就是操作a
--注意普通引用在定義時(shí)必須用同類型的變量進(jìn)行初始化。
下面是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;
}
演示結(jié)果:
root@txp:/home/txp# ./a.out
a = 5
b = 5
&a = 0x7fff408ffdec
&b = 0x7fff408ffdec
-
可編程邏輯
+關(guān)注
關(guān)注
7文章
517瀏覽量
44182 -
C++
+關(guān)注
關(guān)注
22文章
2114瀏覽量
73859
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
卡諾圖與布爾代數(shù)的聯(lián)系
Spire.XLS for C++組件說(shuō)明
![Spire.XLS for <b class='flag-5'>C++</b>組件說(shuō)明](https://file1.elecfans.com/web3/M00/05/E7/wKgZO2eFwUuAbuoQAAAbn_khf8A091.png)
運(yùn)動(dòng)控制卡周期上報(bào)實(shí)時(shí)數(shù)據(jù)IO狀態(tài)之C++篇
![運(yùn)動(dòng)控制卡周期上報(bào)實(shí)時(shí)數(shù)據(jù)IO狀態(tài)<b class='flag-5'>之</b><b class='flag-5'>C++</b>篇](https://file1.elecfans.com/web3/M00/02/A2/wKgZO2dhD7aAExSYAAKMzmoxqe0256.png)
同樣是函數(shù),在C和C++中有什么區(qū)別
C7000 C/C++優(yōu)化指南用戶手冊(cè)
![<b class='flag-5'>C</b>7000 <b class='flag-5'>C</b>/<b class='flag-5'>C++</b>優(yōu)化指南用戶手冊(cè)](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
TMS320C6000優(yōu)化C/C++編譯器v8.3.x
![TMS320<b class='flag-5'>C</b>6000優(yōu)化<b class='flag-5'>C</b>/<b class='flag-5'>C++</b>編譯器v8.3.x](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
C語(yǔ)言和C++中結(jié)構(gòu)體的區(qū)別
C7000優(yōu)化C/C++編譯器
![<b class='flag-5'>C</b>7000優(yōu)化<b class='flag-5'>C</b>/<b class='flag-5'>C++</b>編譯器](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
鴻蒙原生應(yīng)用元服務(wù)開(kāi)發(fā)-倉(cāng)頡基礎(chǔ)數(shù)據(jù)類型布爾類型
OpenVINO2024 C++推理使用技巧
C++語(yǔ)言基礎(chǔ)知識(shí)
C++中實(shí)現(xiàn)類似instanceof的方法
![<b class='flag-5'>C++</b>中實(shí)現(xiàn)類似instanceof的方法](https://file1.elecfans.com/web2/M00/FE/0C/wKgaomaYe1CAQ31QAAAnf0IkoSU605.png)
![](https://file1.elecfans.com/web2/M00/CD/75/wKgaomYgmg2ADWcPAAFu55dKSPQ208.jpg)
C/C++代碼動(dòng)態(tài)測(cè)試工具VectorCAST插樁功能演示#代碼動(dòng)態(tài)測(cè)試 #C++
鴻蒙OS開(kāi)發(fā)實(shí)例:【Native C++】
![鴻蒙OS開(kāi)發(fā)實(shí)例:【Native <b class='flag-5'>C++</b>】](https://file1.elecfans.com/web2/M00/C8/31/wKgZomYZMTCAaDv3AAY5x13C324319.jpg)
使用 MISRA C++:2023? 避免基于范圍的 for 循環(huán)中的錯(cuò)誤
![使用 MISRA <b class='flag-5'>C++</b>:2023? 避免基于范圍的 for 循環(huán)中的錯(cuò)誤](https://file1.elecfans.com/web2/M00/A9/66/wKgZomUl7m-AHJX6AABuJjgxs14678.png)
評(píng)論