[請益] 這是什麼語法 (for C)?

看板 Soft_Job
作者
時間
留言 50則留言,24人參與討論
推噓 21  ( 21推 0噓 29→ )
*ptr++ = "zyxwvutsrqponmlkjihgfedcba9876543210123456789abcdefghijklmnopqrstuvwxyz" [35 + (tmp_value - value * base)]; 在這邊看到的 https://stackoverflow.com/questions/8257714/how-to-convert-an-int-to-string-in-c 不怕各位笑,小弟摸C語言這麼久,今天第一次看到這種寫法 看了半天,實在是不知道是什麼意思 程式碼我Compile過,確定是可以編譯可以Run的 有高手能給個解答嗎? --
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.229.25.207 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1652507531.A.5E9.html
1FNDark: 應該是指定某一已知記憶體的數值 05/14 13:58
2FNDark: 具體來說要看那塊記憶體有什麼特殊 05/14 13:58
3FDarkIllusion: 抱歉 我不太懂你對哪個部分不懂? 05/14 14:00
4FOyodoKai: 哪裡看不懂? 05/14 14:00
5Fccpz: =右邊的部分,是把字串當陣列,去抓出某個 char 而已 05/14 14:02
6FTheOneisNEO: 就排排站然後取index吧 你把那一長串字串先assign給 05/14 14:16
7FTheOneisNEO: 另外一個變數也可以 05/14 14:16
有人將它帶換成這兩行,然後我就看懂了 char no_name[72]="zyxwvutsrqponmlkjihgfedcba9876543210~ vwxyz"; *ptr++ = no_name[35 + (tmp_value - value * base)]; 感謝csfgsj的私下解答 ※ 編輯: wsad50232 (36.229.25.207 臺灣), 05/14/2022 14:23:35
8FNDark: 基本上賣弄技巧的程式碼都是軟體工程的大敵 05/14 16:53
9FNDark: 在我手下 有人敢這樣寫 我一定背後記住 05/14 16:54
10FTwitchGod: 看不懂這該回去重修大一程設吧 05/14 17:02
11FBelieeve: 看來是道行高深的忍者呢 05/14 17:23
12Fwulouise: 不會看不懂 可是code review不被電很奇怪 05/14 17:24
13Fsteve1012: 這根本過不了code review 05/14 17:43
14Fcalqlus: 阿就atoi的封裝寫法 05/14 17:44
15Fcalqlus: 平常會用查內建函式就很不錯了 05/14 17:47
16FManOfSteel: 不會看不懂,但是看這個心情會很差... 05/14 18:54
17Fssccg: 轉換用先建好的表 + 算index查表算是很平常的做法吧? 05/14 19:05
18Fssccg: 單純抓這一行來看才會一時看不懂,原本的函式很好懂啊 05/14 19:06
19Fssccg: 覺得這篇的問法有點斷章取義 05/14 19:09
20FGaogaigar: 前面註解寫個LUT 我review 會給過 05/14 20:36
21Fjayd: 這種寫法code review絕對被靠北 05/14 20:54
22Fshadow0326: 這不是賣弄,而是偷懶吧 05/14 22:50
23Fshownlin: 這個用法覺得還算正常...最近在碰device tree compiler 05/15 01:38
24Fshownlin: 裡面的checker也是這樣建表的 05/15 01:38
25Fshownlin: 大家review的規則比大神還嚴欸0.0 05/15 01:39
26FCoNsTaR: 很多人對爛 code 的定義就是只要我看不懂就是爛 code 05/15 02:52
27FCoNsTaR: code smell 的定義就是只要不合我的意就是 code smell 05/15 02:52
28FCoNsTaR: 結果自己寫出來的反而笑死人 05/15 02:52
29Fwei115: 還好吧 就把字串當陣列用阿 其實我覺得*ptr++還要想一下(x 05/15 02:56
30Fnetburst: 真 05/15 03:31
31Fsunsamy: 也許人家是刷題仔,刷題很多這種賣弄技巧的寫法,解法 05/15 04:01
32FOnlyRD: c型別系統和指針不熟才會看不懂吧?另外說review不 05/15 09:11
33FOnlyRD: 會過,大部分 05/15 09:11
34FOnlyRD: 應該都是在做上層應用的人,原程式是為了解決itoa 05/15 09:11
35FOnlyRD: 並不在c標準的 05/15 09:11
36FOnlyRD: 問題,因此才產生這份code,當然對於效能和記憶體 05/15 09:11
37FOnlyRD: 的要求就遠高於 05/15 09:11
38FOnlyRD: 易讀,畢竟各位上層高手幾個人會去看c標準庫的實作 05/15 09:11
39FOnlyRD: ?toolchain自 05/15 09:11
40FOnlyRD: 帶標準庫通常也都只有程式庫和標頭檔而已。但這類 05/15 09:11
41FOnlyRD: 缺乏易讀性很像 05/15 09:11
42FOnlyRD: 在玩技巧的實作方法,越底層的庫越多,都是有它的 05/15 09:11
43FOnlyRD: 理由的,又不是 05/15 09:11
44FOnlyRD: 吃飽閒著。而且這段code對寫c的人很基本吧?看不懂 05/15 09:11
45FOnlyRD: 的人你才要擔 05/15 09:11
46FOnlyRD: 心他會不會製造許多型別轉換和指標操作的詭異bug。 05/15 09:11
47Fshooter555: 很少看到不先把常數字串先定義好再用的寫法 05/15 09:16
48Fshooter555: 給個變數名 後人還能知道這串是什麼碗糕 05/15 09:17
49Fsanctitysky: 對c來說 很清楚常見 05/15 09:18
50Fyupog2003: 推OnlyRD,易讀性和效能有時候沒辦法兼顧,看需求而已 05/15 09:34

Soft_Job 最新熱門文章

23 [請益] offer請益
52 soft_job 2022-05-13 13:46
25 [請益] Offer 請益
52 soft_job 2022-05-12 13:10
53 [心得] Meta 面試
61 soft_job 2022-05-10 13:04