新手一枚不太了解
還有一個問題
為什么
scanf("%d,%d,%d",&a,&b,&c);
我刪掉&這個后運結果就出不來了
總共兩個問題求解,謝謝
uj5u.com熱心網友回復:
&&是條件判斷, a&& b, 同時滿足a和b,你這個&是取地址,某些情況下是位元位操作,比如c = a & b;uj5u.com熱心網友回復:
位元位操作沒聽懂是什么。。。uj5u.com熱心網友回復:
如果&&這個的意思是條件判斷
哪用if判斷不就好了
uj5u.com熱心網友回復:
&& 可以簡單理解為 并且 的意思, 比如 if (a > 0 && a<10); 用通俗的話說就是 a 大于0并且 a小于10(兩個條件同時滿足)則為真這些都是基礎知識,建議看書
uj5u.com熱心網友回復:
我第一眼看到就想成了取地址的地址。突然一想,這地址的地址怕是沒得吧。納悶中說進來看看,看到二樓的回答,就搞的非常僵硬uj5u.com熱心網友回復:
回答有啥問題嗎?哪里描述的不清晰?
uj5u.com熱心網友回復:
啊,我是說我,知識掌味訓不足夠,以至于都沒能想起這&&是且的意思
uj5u.com熱心網友回復:
&& 相當于數學里的“且”, 兩側都為真時,運算式才為真,在C語言里叫邏輯與。&有兩種用法:
1. 作為單目運算子(運算元有一個),意思是取地址,如 &a, 就是取變數a的地址,p = &a; 就是把變數a的地址存取變數p里。
2. 作為雙目運算子(兩個運算元),意思是“按位與運算”,也就是把左右兩個運算元一位一位地進行“與”運算(1 & 1 = 1, 1 & 0 = 0這種), 比如:a = 3 & 4; ==> 11 & 100 = 0, 那么a存的就是0。這種&&意思其實差不多,都是與運算(兩側都為1(真)時,結果才為1(真)),只不過一個是邏輯上的真偽,一個是數值上的0, 1.
至于scanf引數取地址的問題(只一右側一個運算元時,為取其地址),記住就好了。
scanf函式的引數要求使用變數的地址。以樓主現在的能力,應該不太好理解原因(涉及到scanf的函式實作及指標)
uj5u.com熱心網友回復:
&& 是且&是取變數或者函式地址
uj5u.com熱心網友回復:
&應用于位運算,也可以表示取址,&&是“且”的意思uj5u.com熱心網友回復:
多謝了,我有個疑問,單目運算子和雙目運算子是第一次聽見這個生詞,然后關于你寫的==>我沒有見過我就見過>=和<=
你說的&這個第一個意思我懂了就是p = a的地址
假如a=1
p = a =1
哪為什么還要寫成 p = &a
這樣不也是p = 1嗎
關于&&這個的意思我就理解成且的意思了
呃,或者我可以這樣寫,a>10且b<6。才可以執行下去,如果這樣能執行下去是不是為兩側都符合條件,為[真]運算式
這是我上面的理解
uj5u.com熱心網友回復:
單目運算子和雙目運算子概念自行百度他說的==> 不是運算子而是相當於的意思
地址運算子 這個是與指針結合起來的,指針是個難點
對於 p = &a p存的不是1 而是a的地址值
關於&&意思的理解,建議學習下 邏輯運算
uj5u.com熱心網友回復:
因為常用符號就那么幾個,而需要表示的操作有很多。相對應的有多種解決方案。
一種是引入其他語種的符號,這讓人看起來很困惑,只有在少數領域采取這種方式。(一符一義)
二是像c這樣,用符號的組合,和符號的多載。(多符一義,一符多義)
別理我,好幾天之前寫的回復,忘了該寫什么了,純屬接分。
uj5u.com熱心網友回復:
& 和 && 用做關系運算子的時候, 用& 運算子左右兩個運算式都會計算,然后求解,本質上是 位與操作,前后都是TRUE/FALSE,也就是0,1 用&&時如果左側運算式結果為FALSE的時候,就不再計算右側運算式,當左側是真時才計算右側scanf("%d,%d,%d",&a,&b,&c);
我刪掉&這個后運結果就出不來了
應該是編譯出錯,此處要求的引數是存盤整型變數的地址, int a[3], a,a+1,a+2也可以, 定義int a,b,c, 就必須是&a,&b,&c
uj5u.com熱心網友回復:
我第一眼看到就想成了取地址的地址。突然一想,這地址的地址怕是沒得吧。納悶中說進來看看,看到二樓的回答,就搞的非常僵硬
地址的地址也可以有的
int a;
int* p_a=&a;
int** p_p_a=&p_a;
但是直接&&a不成立
uj5u.com熱心網友回復:
還有雙=,3=等等等這樣的疊加符號,以后會見得更多,多看多問多操作,(? ??_??)?uj5u.com熱心網友回復:
&是取地址操作,uj5u.com熱心網友回復:
“scanf("%d,%d,%d",&a,&b,&c); ”里的“&”是取變數地址的符號,表示的意思是:把輸入的資料放到變數里。當&作為運算子號時,“&&” 是邏輯“與”,“&”是按位與。
uj5u.com熱心網友回復:
看用在哪里,雙目運算& 是與運算有0為0,全1為1;單目運算&是取地址;雙目運算子&&是且的意思,前后都滿足為1,前為0則不判斷后面 直接得0(假)uj5u.com熱心網友回復:
&是運算子號:a & b就類似&&是判斷符號: if(a && b)
uj5u.com熱心網友回復:
&是運算子號:a & b就類似&&是判斷符號: if(a && b)
good
uj5u.com熱心網友回復:
多謝了,我有個疑問,單目運算子和雙目運算子是第一次聽見這個生詞,然后關于你寫的==>我沒有見過我就見過>=和<=
你說的&這個第一個意思我懂了就是p = a的地址
假如a=1
p = a =1
哪為什么還要寫成 p = &a
這樣不也是p = 1嗎
關于&&這個的意思我就理解成且的意思了
呃,或者我可以這樣寫,a>10且b<6。才可以執行下去,如果這樣能執行下去是不是為兩側都符合條件,為[真]運算式
這是我上面的理解
不要把C語言當數學來學。=也完全不是 數學里的等號。還有根本沒有p=a=1,就算有也不會寫成p=&a。p是指標,你可能都沒學過。沒必要討論
scanf里的&a要加&,你加就完事了。為什么想著洗掉?print就不需要加。每個符號有特定的任務。c語言不是天生就有。就是人們定的一套規則約定。你記住這個規則就能用他。如果覺得這些規則不好,很多余。你可以試著自己寫一門語言,定一套自己的規則。
uj5u.com熱心網友回復:
這里可以理解為取地址uj5u.com熱心網友回復:
&&是與的意思,就是倆者全為1才為1&好像是位運算
uj5u.com熱心網友回復:
多謝了,我有個疑問,單目運算子和雙目運算子是第一次聽見這個生詞,然后關于你寫的==>我沒有見過
我就見過>=和<=
你說的&這個第一個意思我懂了就是p = a的地址
假如a=1
p = a =1
哪為什么還要寫成 p = &a
這樣不也是p = 1嗎
關于&&這個的意思我就理解成且的意思了
呃,或者我可以這樣寫,a>10且b<6。才可以執行下去,如果這樣能執行下去是不是為兩側都符合條件,為[真]運算式
這是我上面的理解
p=&a是說p這個指標的地址是a的地址,用來對地址進行操作,不是直接改變他的值p=&a的格式應該是型別 *p=&a
uj5u.com熱心網友回復:
我的理解: 原來的a 等級我記為0;就是變數,然后加上這個&就是給a加上了1級,變成了指標,列印出來值就是地址,scanf函式的引數是需要傳指標的,所以需要加上&。uj5u.com熱心網友回復:

這個圖片可以解決你&&和&的區別。
uj5u.com熱心網友回復:
&&是與,雙目運算子,都為真時,運算式才為真 例如a&&b時,a,b均為真,運算式才是真,&是取地址符,刪掉了就不知道變數的地址,取不出來數值了轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/95882.html
標籤:新手樂園
上一篇:心累
