亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

c++語言中的"!"是什么意思

c++語言中的"!"是什么意思

C++
小唯快跑啊 2019-02-18 14:12:53
#include "iostream.h"int main(){int a=8,b=4,c=2,k=4,m=8,n=6;cout<<a<<b<<c<<k<<m<<n<<endl;if (a!=b||m!=a+b){a=a*k!=!m;a=a+a;}if (a+b>=0&&m/3.0>2){m=k+3*!c;}else{k=k*!m!=c;}cout<<a<<m<<k<<endl;return 0;}初學 c++ 程序中的 !m 是什么意思?感嘆號"!" 都有哪些作用呢?
查看完整描述

2 回答

?
qq_遁去的一_1

TA貢獻1725條經驗 獲得超8個贊

a = 2
m = 4
k = 4
//在c++中所有的非0值都認為是true, 0被認為是false
//所以 !m 當m不是0時,認為是!true, 返回false(0)

好吧,首先我要說這段程序夠變態的,如果你初學c++的話建議不要去深究這段代碼了。如果有人在公司寫出這種代碼,會被直接fire,毫無疑問。

說一下!在c++中的真正作用:

1。 不等號!=
a != b,表示判斷a,b不相等,如果真的不相等返回1(true),否則返回0(false)

2。 取非 !x
x可以是一個變量,可以是返回一個布爾型或整型值的表達式(比如!(a==b))
這時,如果 x 為0(false), !x為1(true)
如果 x 為非0(true), !x為0 (false)

以上兩點是!在c++中的應用的所有作用,沒有更多。

至于那段程序,其實加入了很多運算符優先級的應用,而且可讀性極差,是非常糟糕的編程風格,樓主不要學習他,下面依次解釋一下都發生了什么:

if (a!=b || m!=a+b) //判斷a不等于b 或 m不等于a+b 顯然為true
a=a*k!=!m; //這句先執行 a*k != !m, 其中m不為0,所以!m 為 0
// a * k 不為0, 所以a*k != !m 返回true(1)
// a = 1
a= a+a; // a = 2

if (a+b>=0 && m/3.0 > 2 ) //先執行a+b>=0 返回true; 然后m/3.0 >2 返回true; true && true 為 true, 進入if
{
m = k + 3*!c; //先執行!c, 為0; 3*0 為0 ; k+0 為4 ;m =4
}
else //不進入

//程序輸出。

==============================================
另外,樓主的程序是編譯不過的,更改如下:

#include <iostream>
using namespace std;
int main()
{
int a=8,b=4,c=2,k=4,m=8,n=6;
cout<<"a:"<<a<<"\tb:"<<b<<"\tc:"<<c<<"\tk:"<<k<<"\tm:"<<m<<"\tn:"<<n<<endl;
a=a*k!=!m;
if (a!=b||m!=a+b)
{
a=a*k!=!m;
a=a+a;
}
if (a+b>=0&&m/3.0>2)
{
m=k+3*!c;
cout<<m<<endl;
}
else
{
k=k*!m!=c;
}
cout<<"a:"<<a<<endl<<"m:"<<m<<endl<<"k:"<<k<<endl;
char lll;
cin >> lll;
return 0;
}



查看完整回答
反對 回復 2019-02-24
  • 2 回答
  • 0 關注
  • 4897 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號