久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4332|回復: 32
收起左側

一個c語言寫法的問題 有興趣的看看

  [復制鏈接]
ID:47286 發表于 2021-12-2 10:59 | 顯示全部樓層 |閱讀模式
如果a與b 第一種寫是 a=a&b 第二種寫法 a&=b
那現在要 a與b與c 第一種寫是 a=a&b&c 問題是 有第二種寫法嗎
回復

使用道具 舉報

ID:578842 發表于 2021-12-2 12:49 | 顯示全部樓層
你把&和=的你優先級考慮上就知道了
回復

使用道具 舉報

ID:624769 發表于 2021-12-2 13:57 | 顯示全部樓層
寫法其實沒所謂,學單片機把時間花在這上面不值得……

不管你寫 a &= b;
還是你寫 a = a&b;

你編譯一下,然后 CTRL + F5 , 看看編譯出來的代碼,都是一樣的。 換句話說,對于編譯器來講,你不同的寫法就是 宋體 還是 仿宋體 的區別,那個字還是那個字。
回復

使用道具 舉報

ID:47286 發表于 2021-12-2 15:09 | 顯示全部樓層
沙發 講真 和你一樣的這種回答方式我都不太喜歡 技術論壇又不是悟道 話還說一半留一半
回復

使用道具 舉報

ID:47286 發表于 2021-12-2 15:10 | 顯示全部樓層
188610329 發表于 2021-12-2 13:57
寫法其實沒所謂,學單片機把時間花在這上面不值得……

不管你寫 a &= b;

你沒看明白內容

我是問 如果三個與的時候 有別的寫法么

這個小事算不上值得不值得吧 多了解一點又沒啥壞處
回復

使用道具 舉報

ID:624769 發表于 2021-12-2 15:29 | 顯示全部樓層
dzbj 發表于 2021-12-2 15:10
你沒看明白內容

我是問 如果三個與的時候 有別的寫法么

你可以寫成  a &= b&C;
回復

使用道具 舉報

ID:624769 發表于 2021-12-2 15:43 | 顯示全部樓層
dzbj 發表于 2021-12-2 15:10
你沒看明白內容

我是問 如果三個與的時候 有別的寫法么

你可以寫成  a &= b&C;

然后,回應一下你在地板的問題。

如果你問的是  a &= b&C; 是什么意思, 可能會答復的樂意的一點。
但是,你問  a = a & b &c; 還有什么別的寫法,就會讓人比較不喜。

你看看論壇里,有多少編程不懂多少,邏輯不清晰的,代碼寫的極其花哨的,發個求助帖代碼還是一層套一層的,閱讀性極差的。一邊求助,一邊增加幫助人的閱讀成本。真要是只會基礎寫法,一句句寫代碼,估計能幫她的會更多。或者說更多人愿意幫她。

個人觀點,僅供參考。
回復

使用道具 舉報

ID:824490 發表于 2021-12-2 15:53 | 顯示全部樓層
"回"字有4種寫法
讀過書的都知道吧?
回復

使用道具 舉報

ID:47286 發表于 2021-12-2 15:55 | 顯示全部樓層
188610329 發表于 2021-12-2 15:29
你可以寫成  a &= b&C;

哦 謝謝 了解了 還可以這么寫

我是寫個有源蜂鳴器通斷 有個限制條件 必須滿足蜂鳴器才工作 后來又加了個條件 就好奇 想知道一下有沒有其它寫法了
回復

使用道具 舉報

ID:47286 發表于 2021-12-2 16:01 | 顯示全部樓層
名字不是重點 發表于 2021-12-2 15:53
"回"字有4種寫法
讀過書的都知道吧?

呵呵 都是搞技術的繞啥彎啊 知道就直說 看不上也可以直說
回復

使用道具 舉報

ID:824490 發表于 2021-12-2 16:15 | 顯示全部樓層
dzbj 發表于 2021-12-2 16:01
呵呵 都是搞技術的繞啥彎啊 知道就直說 看不上也可以直說

那我就直說了:搞那些花哨玩藝,然并。。你看得懂不代表后來者看得懂。。代碼的靈魂邏輯,能讓人一看明白的寫法,自然勝過那些彎彎繞的寫法。一不小心寫錯了,查都不好查。個人還是趨向于簡單的寫法。

說句不好聽的,這叫賣弄、裝,除了這些,對代碼的優化沒有半點幫助。

{不喜勿噴,通知必刪}
回復

使用道具 舉報

ID:139866 發表于 2021-12-2 16:34 | 顯示全部樓層
為什么這樣你有一萬黑幣啊
回復

使用道具 舉報

ID:47286 發表于 2021-12-2 17:06 | 顯示全部樓層
名字不是重點 發表于 2021-12-2 16:15
那我就直說了:搞那些花哨玩藝,然并。。你看得懂不代表后來者看得懂。。代碼的靈魂邏輯,能讓人一看明白 ...

嗯 嗯 你說的都有道理 也對 我支持你的看法 但請允許我保留自己的看法 畢竟這個世界很大 不應該只有一種看法 你說對么 何況 我也沒想怎么樣 只是好奇而已 好奇和懶是推動人類文明發展極大的動力 你說是么

至于是賣弄還是裝B 你可以有你的看法 就像有人看見穿比基尼的女人就撇嘴 覺得低俗 他當然可以這么想但并不表示其它人不能喜歡 對吧

在非原則性的問題上 每個人都有保留自己想法的權力
回復

使用道具 舉報

ID:47286 發表于 2021-12-2 17:09 | 顯示全部樓層
天ノ憶 發表于 2021-12-2 16:34
為什么這樣你有一萬黑幣啊

因為我喜歡這里 所以每天都登錄 每天登錄就會有黑幣 日子久了就有這么多 基本就是這樣 就我的水平而言沒啥可回帖的東西 很多人都比我強 我回的很少
回復

使用道具 舉報

ID:47286 發表于 2021-12-2 17:21 | 顯示全部樓層
188610329 發表于 2021-12-2 15:43
你可以寫成  a &= b&C;

然后,回應一下你在地板的問題。

感謝你回帖 你說的情況我也有體會 通常我不喜歡看的就不看也不回就完了 但我通常不會說什么 因為我初學的時候 有很多問題卡住 而我發貼求助的時候 我說的太外行了 前輩看不懂 也懶得理我 就沒人回 那時候我真是感覺太難學了 上天無路入地無門

現在雖然我懂了一點 但還是很初級 而那些我看不懂的 不喜歡看的 我就閉嘴 給人家一個求助的可能

至于花哨 我只能說 那是人家的喜好 憑什么代碼就一定要方方正正的 喜歡效率沒錯 也對 堅持自己的選擇好了 喜歡花哨只要能實現功能 也沒錯 干嘛要去鄙視呢
回復

使用道具 舉報

ID:401564 發表于 2021-12-2 17:38 | 顯示全部樓層
a=a&b&c 這個已經讓人明白了這語句是要干嘛的.而且,這也不要需要大量的輸入
a&=b&c 這個你可以驗證一下,我不知道也不想知道這樣對不對
因為這真的不重要,就像樓上說的"回字有四種寫法"
a=a&b&c實在是太沒有深入的意義了,對比于a&=b&c,a=a&b&c能進化出什么來呢?不管是對于程序的編寫還是對于中東局勢,它都沒有什么深遠的影響,何必把心意花在這上面?
當然,如果你是像我這樣無聊的人,那還是可以理解的
回復

使用道具 舉報

ID:987318 發表于 2021-12-2 17:47 | 顯示全部樓層
第二種寫法是:a &= b&c;    a &= b 其實是 a = a&b 的一種更簡單的等價形式,重點關注變化量,a = a+1 可以寫成 a += 1 關注增量,是一個道理
回復

使用道具 舉報

ID:47286 發表于 2021-12-2 19:02 | 顯示全部樓層
Y_G_G 發表于 2021-12-2 17:38
a=a&b&c 這個已經讓人明白了這語句是要干嘛的.而且,這也不要需要大量的輸入
a&=b&c 這個你可以驗證一下,我 ...

感謝回帖

我純粹是因為不知道有3個條件的時候 有啥其它寫法 然后 就想問問 知道一下 就這么簡單

一個純粹的技術問題 想其它的都是想多了
回復

使用道具 舉報

ID:47286 發表于 2021-12-2 19:04 | 顯示全部樓層
hehehao 發表于 2021-12-2 17:47
第二種寫法是:a &= b&c;    a &= b 其實是 a = a&b 的一種更簡單的等價形式,重點關注變化量,a = a+1 可 ...

感謝回帖 我之前不知道三個條件的時候還可以這么寫 我看過的書上也沒說過
回復

使用道具 舉報

ID:987378 發表于 2021-12-2 20:24 | 顯示全部樓層
C的話不能同時,估計得寫a&=b&&a&=c
回復

使用道具 舉報

ID:624769 發表于 2021-12-2 20:46 | 顯示全部樓層
dzbj 發表于 2021-12-2 19:04
感謝回帖 我之前不知道三個條件的時候還可以這么寫 我看過的書上也沒說過

想來想去,還是補充說明一下,唉……,又得打好多字。

正確來講,在KEIL C 中,  a = a & b & c;  是沒有另外一種寫法的。但是,怕被半吊子的人噴,我還是跟你說了可以寫成:  a &= b&c;  這種寫法,從結果論來講,是正確的,但是從過程論來講是錯誤的。
因為嚴格意義上來說:   
a &= b & c;  其實應該等同于   a = a & (b & c);   
而 a = a & b & c 是等同于: a = (a & b) & c;
這兩個式子,就結果而言,是相等的,就過程而言差別是非常大的。

假定,不是 a = a & b & c;   假定是: a = a & b | c
那么,你會發現,  a = (a & b) | c   和 a = a &(b | c); 結果是完全不同的。
我們以 a = 0x55, b = 0x0f, c= 0xf0 為例,
前者計算出來, a = 0xf5, 后者算出來 a = 0x55;

上述的舉例,你應該能理解 a = a & b & c; 嚴格來講沒有另一種寫法的理由了。

然后再跟你講講如何才是,真正的 a = a & b & c;  的另外一種寫法。
首先定義:
#define   alland(x,y,z)          (x) = (x) & (y) & (z)

然后,當你程序寫  alland(a,b,c)    的時候, 就等同于 a = a & b & c; 是完完全全等同。
先不要嗤之以鼻, 這個看上去很無聊的做法,其實,原理和 a &= b;  等同于 a = a & b; 是一樣的道理。區別在于,一個是在編譯器里面默認定義了,一個是你手動定義了。本質是一樣的。

多的我不想說,我只想讓你明白,為什么你這個問題,那么多人都不爽的原因。說到底,真的是毫無意義的事情。最根本的掌握了才是王道,多種寫法,換個編譯器就能多出很多,或者你有時間,自己都能定義出很多。
回復

使用道具 舉報

ID:47286 發表于 2021-12-2 21:51 | 顯示全部樓層
188610329 發表于 2021-12-2 20:46
想來想去,還是補充說明一下,唉……,又得打好多字。

正確來講,在KEIL C 中,  a = a & b & c;  是 ...

非常感謝 你這個寫的對我來說很有料

我只是依稀的感覺 會有什么不妥 但自己也說不清 也想不明白 你說的帶()那行如醍醐灌頂 一下就明白之前自己依稀感覺的不對頭了 假如真這么寫確實應該注意這點 結果會出問題

至于有沒有意義 這個吧。。。。。我覺得啊。。。。。。各人對意義的理解不一樣

我們一幫男人都挺喜歡汽車的 一幫人一起能聊的很深 而且有自己的看法 當然免不了談自己想買什么車 男人嘛 多半是動力啦 操控啦 巴拉巴拉巴拉 你理解就好 我們單位一個女士 問我們應該買什么車 我們說了好多 人家都不要 后來 我們問她要什么樣的啊 人家說 要好看的

哈哈 你理解了么 那種我們嗤之以鼻看不上的東西 就是人家喜歡的 是人家要的 人家愿意花錢的 人家錯了么 人家沒討厭我們天天聊機械 我們憑什么看不上人家就喜歡好看的車 所以工科狗不容易找老婆呢 太認死理 人家問了 對人家有意義就行了 憑什么不喜歡啊 再說了 不喜歡可以不說嘛
回復

使用道具 舉報

ID:47286 發表于 2021-12-2 22:03 | 顯示全部樓層
188610329 發表于 2021-12-2 20:46
想來想去,還是補充說明一下,唉……,又得打好多字。

正確來講,在KEIL C 中,  a = a & b & c;  是 ...

另外 你回帖中這句

#define   alland(x,y,z)          (x) = (x) & (y) & (z)

我理解 實際上有用的就是后邊這個 (x) = (x) & (y) & (z) 而這個 和直接寫x=x&y&z是一樣的 就是你說的 完全沒意義 直接寫x=x&y&z好了 而最終結果是 假如都是& 如果喜歡或者習慣的話 可以用第二種寫法 但如果有&和| 那么寫就可能出問題
回復

使用道具 舉報

ID:879348 發表于 2021-12-3 08:37 | 顯示全部樓層
考試就愛考這種無意義的問題
回復

使用道具 舉報

ID:47286 發表于 2021-12-3 09:24 | 顯示全部樓層
wufa1986 發表于 2021-12-3 08:37
考試就愛考這種無意義的問題

我上學的時候也老這么想 現在想想 學習時期和工作時期目的不一樣

設計汽車的人知道螺絲的重要性 但不會去研究螺絲的具體工藝要求 但學習的時候 就有必要了解螺絲的工藝 不然不會建立正確的螺絲選擇觀

前面那位前輩說多這句 我個人認為就是意義 雖然討論這個怎么寫很多人看來可能就是沒意義 因為你們可能都是科班出來的吧 這種簡單到規則的東西無所謂 我這種半路出家的就不一樣了 畢竟沒受過專門培訓

“假定,不是 a = a & b & c;   假定是: a = a & b | c
那么,你會發現,  a = (a & b) | c   和 a = a &(b | c); 結果是完全不同的。”

所以吧 意義對各人來說 含義不一樣 人有時候可能就是容易認為我知道的別人就應該也知道 但實際上不一定
回復

使用道具 舉報

ID:624769 發表于 2021-12-3 13:46 | 顯示全部樓層
dzbj 發表于 2021-12-2 22:03
另外 你回帖中這句

#define   alland(x,y,z)          (x) = (x) & (y) & (z)

既然,你對這個有興趣,我又正好現在沒事,就跟你好好聊聊,希望你有耐心看完。

#define   alland(x,y,z)          (x) = (x) & (y) & (z)
#define   allor(x,y,z)          (x) = (x) | (y) | (z)
#define   andthenor(x,y,z)          (x) = (x) & (y) | (z)
#define   andafteror(x,y,z)          (x) = (x) & ((y) | (z))
#define   orthenand(x,y,z)          (x) = (x) | (y) & (z)
#define   orafterand(x,y,z)          (x) = (x) | ((y) & (z))

由此,可以看出,只要你定義的足夠的多,就能有“第二種寫法” 應對各種情況。 但是,如果你都用這種方法寫代碼,自己寫是沒有問題,如果這代碼轉給第三人看,或者發帖求助,別人是劈死你的心都有。

那么,既然換一種寫法有那么多人會不爽,為什么 會有 a &=b; 和 a = a & b; 編譯器自帶的這兩種寫法呢?這個牽涉到歷史遺留問題,別急,會跟你講清楚的。

最開始,最正統的C語言,是只有  a = a & b; 這一種寫法的, 等號左邊是賦值目的地,等號右邊是表達式,或者說計算方式。這個表達方式用現在的話來講, 很"C語言"。
那么為什么后來會引入(或者說創造出) a &= b; 這種不正統的書寫方式呢? 受環境所迫。就和現在新產品面世,必須要推廣建立用戶基礎一樣,C語言推出之初,是沒有用戶基礎的,那時候大多數人都在用A語言,即匯編。C語言門檻低,適合初學者,這是沒錯,但是,每人愿意學啊,就好像屠龍絕技學了,之后你沒有龍可以屠,有什么用呢? 初學者學了C, 開發團隊的前輩們還在用A, 這怎么搞?(當時并沒有匯編和C混合編程這個功能的)。于是,讓已經編程多年的老手,轉移到C ,成了關鍵。其中商業當中的運作,彎彎繞繞就不講了,直接跳到關鍵點。 C語言的語法,對用了一輩子匯編的人來說,是非常不友好的。為了讓這些人更快的掌握C, 于是C語言非常“貼心”的增加了,符合匯編人的書寫習慣的“第二種寫法”。
比如說: a = a & b;  他的意思是,把 a 和 b 相與 并且,把結果保存到 a  
匯編中,沒有這種寫法的,匯編中只有類似這樣的:  ANL A,B    即把 B 的值 與到 A,  匯編中不需要考慮結果保存去哪里,也不能考慮結果保存在哪里,
所以,針對匯編用戶的習慣, C語言 “很貼心” 的 增加了  a &= b; 這種 “很匯編” 的寫法。 同類的還有很多,
比如:  a |= b;   對應:   ORL  A,B
比如:  a +=b;   對應:   ADD  A,B
比如:  a++       對應:   INC  A
比如:  a--         對應:   DEC  A又比如: while(!TI);  對應: JNB TI,$      正統的寫法應該是用表達式: while(TI == 0)  等等,很多很多。
總之,為了拉攏這批  老編程員 投入C的懷抱,提供了大量的“很匯編”的“第二種寫法”。
所以,剛開始的時候,這一類的 “不怎么C” 的C語言,反而是使用頻率最高的。而新人們,雖然可能沒有學過匯編,看到前輩們這樣寫,為了不給前輩們增加閱讀成本,也盡量的這么寫。(現在看來,以前的新人們真的很貼心)。 所以,這些新人們,也習慣了使用這種“非標”的C代碼,久而久之本來作為權益之計的“第二種書寫法”就根深蒂固的成為了一種標準書寫規范。哪怕進化到了 TC , C++, 都一直延續保留了下來。

扯遠了,我們扯回來。重點來了:
你會經常在看別人的代碼里看到  a &= b; a +=b; 這些“非標”的書寫方式, 但是,你很好奇 a = a & b & c 有沒有類似的寫法,因為你在別人的代碼里沒有機會看到。 那么,為什么你會看不到呢? 不是因為沒有,不是因為寫不出來, 因為  a = a & b & c  完全不符合 匯編邏輯。 所以不會有人使用 “很匯編” 的寫法,去寫這樣的表達式,所以,你看不到實例。 硬寫是可以的, 根據實際應用情況, 可以寫成 a &= b & c; 也可以由第三種寫法,但是,這樣做就刻意了。 老匯編程序員, 把 a = a & b;  寫成 a &= b;  可以提高閱讀效率,降低閱讀成本, 但是  a &= b & c  這種寫法,對于習慣匯編邏輯的老程序員一樣是要繞腦子的。 所以,他本人不會這樣寫, 新人們也不會這樣寫,因此,你基本不會在他人程序里面看到,假如有看到,那么這個人一定是 刻意裝X的,決不是習慣問題,或者編程邏輯問題。

洋洋灑灑寫了一大堆,主要是讓你了解一下,有多種寫法的歷史背景,以及為什么很多人會習慣用一些 “很不C” 的 “第二種寫法”。 算是“科普”吧。

評分

參與人數 2黑幣 +30 收起 理由
w1179benp + 15 很給力!
一片一城 + 15 很給力!

查看全部評分

回復

使用道具 舉報

ID:47286 發表于 2021-12-3 20:16 | 顯示全部樓層
188610329 發表于 2021-12-3 13:46
既然,你對這個有興趣,我又正好現在沒事,就跟你好好聊聊,希望你有耐心看完。

#define   alland(x,y ...

太感謝了 你講的非常清楚 我都認真讀了 而且終于明白為什么會這樣 你說的這些 真是書里看不見的東西 不知道別人怎么看 我很喜歡 幾乎是一個歷史 編程語言的歷史故事 雖然只是技術 但技術里的人文也挺有意思的

不知道怎么感謝你好 我發個最近我做的東西給你看 你覺得行么 本來我是懶得發這些 要調整圖片挺麻煩的 而且也不是產品 就是自己用的 但講編程 顯然我沒啥可和你交流的 差太遠 不知道你對個人制造是否有興趣 有我就整理一下發 沒興趣就再找機會
回復

使用道具 舉報

ID:624769 發表于 2021-12-4 00:34 | 顯示全部樓層
dzbj 發表于 2021-12-3 20:16
太感謝了 你講的非常清楚 我都認真讀了 而且終于明白為什么會這樣 你說的這些 真是書里看不見的東西 不知 ...

無需感謝,不必放在心上。

你若有時間,自己也想整理,那么就分享一下, 如果時間有限,有事纏身,也不必刻意。
很多時候,懶癌發作,是身體一種保護機制,是提醒你需要休息。
回復

使用道具 舉報

ID:911455 發表于 2021-12-4 09:44 | 顯示全部樓層
想起的譚浩強里的破書,一大堆運算符堆到一起,問哪個先執行,優先級這東西,與其去花心思,加個括號他不香嗎
回復

使用道具 舉報

ID:139866 發表于 2021-12-4 12:18 | 顯示全部樓層
innere 發表于 2021-12-4 09:44
想起的譚浩強里的破書,一大堆運算符堆到一起,問哪個先執行,優先級這東西,與其去花心思,加個括號他不香 ...

那一套完全就是為了不掛科準備的,實際應用中這么寫,我肯定要把他頭錘爆!
回復

使用道具 舉報

ID:678280 發表于 2022-1-12 11:21 | 顯示全部樓層
188610329 發表于 2021-12-3 13:46
既然,你對這個有興趣,我又正好現在沒事,就跟你好好聊聊,希望你有耐心看完。

#define   alland(x,y ...

剛看到你的短文。

對初學的我來說,明白了讓我迷惑的“ !TI ”, 其實就是讓人一眼能夠看明白的 “TI==0”。
回復

使用道具 舉報

ID:1001464 發表于 2022-1-12 11:27 | 顯示全部樓層
要了解一下= 和&的優先級,另外,不建議一定這么寫,這在很多白盒測試過不了的
回復

使用道具 舉報

ID:884042 發表于 2022-1-14 14:58 | 顯示全部樓層
Y_G_G 發表于 2021-12-2 17:38
a=a&b&c 這個已經讓人明白了這語句是要干嘛的.而且,這也不要需要大量的輸入
a&=b&c 這個你可以驗證一下,我 ...

真心感覺你懟人很NB。。。。。。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩一级精品视频在线观看 | 一本岛道一二三不卡区 | 久久亚洲国产精品 | 日本aa毛片a级毛片免费观看 | 免费黄色大片 | 狠狠操电影 | 亚洲狠狠 | 2018天天干天天操 | 国产亚洲精品久久久久动 | 北条麻妃视频在线观看 | 亚洲日日夜夜 | 亚洲欧美视频一区 | 亚洲性在线 | 亚洲最大福利网 | 午夜视频一区 | 亚洲精品在线免费 | 中文在线播放 | 久久久久国产精品午夜一区 | 亚洲一区二区三区四区视频 | 欧美在线视频二区 | 国产 日韩 欧美 制服 另类 | 四虎成人av | 色婷婷综合网 | 亚洲一区二区三区高清 | 亚洲一区在线播放 | 在线免费国产视频 | 国产精品中文字幕在线观看 | 韩国欧洲一级毛片 | 欧美日韩精品一区二区天天拍 | 亚洲精品自在在线观看 | 国产日韩一区二区三区 | 亚洲视频国产视频 | 91污在线 | 日韩一二区在线观看 | 91看片在线 | 日韩av中文| 午夜在线影院 | av资源在线看 | 蜜桃视频麻豆 | 国产精品一区二区三区四区 | 国产精品免费在线 |