Soft_Job 板


LINE

*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://webptt.com/m.aspx?n=bbs/Soft_Job/M.1652507531.A.5E9.html
1F:推 NDark: 應該是指定某一已知記憶體的數值 05/14 13:58
2F:→ NDark: 具體來說要看那塊記憶體有什麼特殊 05/14 13:58
3F:推 DarkIllusion: 抱歉 我不太懂你對哪個部分不懂? 05/14 14:00
4F:推 OyodoKai: 哪裡看不懂? 05/14 14:00
5F:推 ccpz: =右邊的部分,是把字串當陣列,去抓出某個 char 而已 05/14 14:02
6F:推 TheOneisNEO: 就排排站然後取index吧 你把那一長串字串先assign給 05/14 14:16
7F:→ TheOneisNEO: 另外一個變數也可以 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
8F:推 NDark: 基本上賣弄技巧的程式碼都是軟體工程的大敵 05/14 16:53
9F:→ NDark: 在我手下 有人敢這樣寫 我一定背後記住 05/14 16:54
10F:推 TwitchGod: 看不懂這該回去重修大一程設吧 05/14 17:02
11F:推 Belieeve: 看來是道行高深的忍者呢 05/14 17:23
12F:→ wulouise: 不會看不懂 可是code review不被電很奇怪 05/14 17:24
13F:推 steve1012: 這根本過不了code review 05/14 17:43
14F:推 calqlus: 阿就atoi的封裝寫法 05/14 17:44
15F:推 calqlus: 平常會用查內建函式就很不錯了 05/14 17:47
16F:推 ManOfSteel: 不會看不懂,但是看這個心情會很差... 05/14 18:54
17F:→ ssccg: 轉換用先建好的表 + 算index查表算是很平常的做法吧? 05/14 19:05
18F:→ ssccg: 單純抓這一行來看才會一時看不懂,原本的函式很好懂啊 05/14 19:06
19F:→ ssccg: 覺得這篇的問法有點斷章取義 05/14 19:09
20F:推 Gaogaigar: 前面註解寫個LUT 我review 會給過 05/14 20:36
21F:推 jayd: 這種寫法code review絕對被靠北 05/14 20:54
22F:→ shadow0326: 這不是賣弄,而是偷懶吧 05/14 22:50
23F:推 shownlin: 這個用法覺得還算正常...最近在碰device tree compiler 05/15 01:38
24F:→ shownlin: 裡面的checker也是這樣建表的 05/15 01:38
25F:→ shownlin: 大家review的規則比大神還嚴欸0.0 05/15 01:39
26F:推 CoNsTaR: 很多人對爛 code 的定義就是只要我看不懂就是爛 code 05/15 02:52
27F:→ CoNsTaR: code smell 的定義就是只要不合我的意就是 code smell 05/15 02:52
28F:→ CoNsTaR: 結果自己寫出來的反而笑死人 05/15 02:52
29F:推 wei115: 還好吧 就把字串當陣列用阿 其實我覺得*ptr++還要想一下(x 05/15 02:56
30F:→ netburst: 真 05/15 03:31
31F:推 sunsamy: 也許人家是刷題仔,刷題很多這種賣弄技巧的寫法,解法 05/15 04:01
32F:推 OnlyRD: c型別系統和指針不熟才會看不懂吧?另外說review不 05/15 09:11
33F:→ OnlyRD: 會過,大部分 05/15 09:11
34F:→ OnlyRD: 應該都是在做上層應用的人,原程式是為了解決itoa 05/15 09:11
35F:→ OnlyRD: 並不在c標準的 05/15 09:11
36F:→ OnlyRD: 問題,因此才產生這份code,當然對於效能和記憶體 05/15 09:11
37F:→ OnlyRD: 的要求就遠高於 05/15 09:11
38F:→ OnlyRD: 易讀,畢竟各位上層高手幾個人會去看c標準庫的實作 05/15 09:11
39F:→ OnlyRD: ?toolchain自 05/15 09:11
40F:→ OnlyRD: 帶標準庫通常也都只有程式庫和標頭檔而已。但這類 05/15 09:11
41F:→ OnlyRD: 缺乏易讀性很像 05/15 09:11
42F:→ OnlyRD: 在玩技巧的實作方法,越底層的庫越多,都是有它的 05/15 09:11
43F:→ OnlyRD: 理由的,又不是 05/15 09:11
44F:→ OnlyRD: 吃飽閒著。而且這段code對寫c的人很基本吧?看不懂 05/15 09:11
45F:→ OnlyRD: 的人你才要擔 05/15 09:11
46F:→ OnlyRD: 心他會不會製造許多型別轉換和指標操作的詭異bug。 05/15 09:11
47F:→ shooter555: 很少看到不先把常數字串先定義好再用的寫法 05/15 09:16
48F:→ shooter555: 給個變數名 後人還能知道這串是什麼碗糕 05/15 09:17
49F:推 sanctitysky: 對c來說 很清楚常見 05/15 09:18
50F:推 yupog2003: 推OnlyRD,易讀性和效能有時候沒辦法兼顧,看需求而已 05/15 09:34
51F:→ sazabijiang: 這就是為什麼會有Java的誕生 05/15 11:45
52F:推 Bencrie: 有標準的 snprintf 要這個幹嘛? 05/15 12:34
53F:推 wulouise: 底層library跟上層應用的review標準不同,我是以上層看 05/15 14:12
54F:→ labbat: 去跟主管講唄,說服網友幹嘛 05/15 14:15
55F:推 wulouise: @Bencrie 見https://bit.ly/3LdC6LV 它比snprintf快 05/15 14:19
56F:推 sazabijiang: 一個後人無法容易維護的程式碼,就是爛的程式碼 05/15 14:22
57F:推 bnd0327: 這行就是沒有要讓人維護的,這是基礎函式,不是商業邏輯 05/15 16:21
58F:→ sazabijiang: 然後會出錯的地方,就是這種沒打算讓人維護的地方 05/15 16:32
59F:→ brucetu: 寫底層的跟寫商業邏輯的在討論可讀性 05/15 17:57
60F:→ brucetu: 目的就不同 作法當然不同 05/15 17:58
61F:推 brucetu: code review看到這段code出現在itoa的實作裡面 05/15 18:00
62F:→ brucetu: 還感覺不出是在做什麼操作的 是review的人有問題吧? 05/15 18:00
63F:→ brucetu: review本來就要看整個context啊 05/15 18:00
64F:推 Bencrie: 不要可讀那不考慮直上 asm 嗎? 05/15 18:50
65F:→ Firstshadow: 這個很好讀吧 哪裡不好讀== 05/15 19:16
66F:推 shownlin: kernel裡面不就一堆.s 05/15 19:47
67F:推 shownlin: 話說這一段code明明就很直白 05/15 19:50
68F:→ shownlin: 硬要扯說看不懂也太扯 05/15 19:50
69F:→ acgotaku: 大家這麼兇 以後誰敢問問題 05/15 20:27
70F:推 acgotaku: 但會這樣寫的,有點像是程式新手 05/15 20:30
71F:推 knme: code review看到這個,會希望前面多個註解 05/15 20:32
72F:推 shownlin: 原來GCC底層是一群新手寫的嗎…… 05/15 20:52
73F:推 wulouise: 本來code review就是根據維護人的能力來評估的 05/15 21:08
74F:→ wulouise: 實際上不會有這麼多人都有維護gcc底層的能力 05/15 21:09
75F:→ sarafciel: 新手才不敢這樣寫啦 要看懂這段code會吃對指標的理解 05/15 22:37
76F:推 manmay: 常數字串查表比額外宣告一個區域變數快很多吧 05/16 00:44
77F:推 hengsao: 一群能力不到的人對自己能力不到的程式庫該怎麼實作很有 05/16 04:57
78F:→ hengsao: 意見== 05/16 04:57
79F:→ shooter555: 不提前宣告這串char 而丟在loop裡面 不知道是什麼操作 05/16 09:34
80F:→ shooter555: 是我是不會這樣寫 05/16 09:35
81F:→ shooter555: 前面推文有提到理由 那這邊的理由不知道是什麼 有高手 05/16 09:37
82F:→ shooter555: 知道的嗎 05/16 09:37
83F:噓 xxtuoo: 這幾行看不懂的 才該被注意Zzz 05/16 09:43
84F:→ ssccg: 常數丟在loop裡還是常數,就只用在這為什麼要另外生個變數? 05/16 11:38
85F:→ freef1y3: compiler沒這麼笨 你就算先生個變數存也不會比較慢啦.. 05/16 11:45
86F:推 aasssdddd: 第一次看到 長姿勢了 不管寫法一定有地方特別存那字串 05/16 12:38
87F:→ ssccg: 不是說快慢有差,是在回兩樓前的,為什麼要提前宣告? 05/16 12:46
88F:推 labbat: 一大串人類看不懂啊,宣告就是逐步做一大串做的事情 05/16 13:30
89F:→ sarafciel: 不會比較慢其實不好說XD 要看你變數型態怎麼給 05/16 14:01
90F:→ sarafciel: compiler不笨沒錯 但compiler會為了programmer變笨 05/16 14:02
91F:→ sarafciel: 然後你知道函式是itoa的話,要理解那個字串的意圖不難 05/16 14:06
92F:→ sarafciel: 在這個前提下,他這樣寫的用意我猜是scope 05/16 14:06
93F:→ sarafciel: 就跟anonymous function的目的一樣,只在某處只用一次 05/16 14:07
94F:→ sarafciel: 如果你把這個表拉出去迴圈外,作為reviewer 05/16 14:08
95F:→ sarafciel: 第一時間看會假定這個字串在函式內有好幾個地方用到 05/16 14:08
96F:→ sarafciel: 而他這樣寫相當於告訴你scope鎖死在這一行 05/16 14:09
97F:→ brucetu: 到底是*ptr++=真的沒那麼難懂 05/16 21:09
98F:→ brucetu: 字串查表也很常見 05/16 21:10
99F:→ brucetu: 很多爛程式可讀性差是因為物件之間的關係混亂 職權不清。 05/16 21:14
100F:→ brucetu: 看不懂這行的叫做語法不熟 不是他寫成一行可讀性差 05/16 21:14
101F:推 manmay: c語言標準有定義 常數字串的storage duration 05/17 00:51
102F:→ manmay: C99 $6.7.8 Initialization 05/17 00:51
103F:推 descent: c 博大精深, 真的有很多沒看過的用法。 05/17 17:58
104F:推 descent: 另外char no_name[72]="z.." 可能應該要改 05/17 18:01
105F:→ descent: const char *no_name = "z..." 比較恰當 05/17 18:01
106F:→ oToToT: 上面那樣改的話no_name還是會被指去不同地方,可能還是不 05/17 18:16
107F:→ oToToT: 太好? 05/17 18:16
108F:推 descent: 這問題也可以 po 到 c_cpp 版 05/17 20:26
109F:推 newking761: 如果我是你老闆,你大概離職了 05/18 08:34
110F:→ wsad50232: 樓上可能不適合當老闆 05/18 11:34
111F:推 Isaea: c最多這種把好幾行濃縮在一行的寫法,老實的拆開不好嗎 05/18 12:37
112F:推 sazabijiang: 炫技 05/18 17:34
113F:→ eva19452002: 寫個可讀性高的程式碼會犧牲很多效能嗎? 05/20 17:59
114F:推 OnlyRD: compiler會把c string放到字串section,程式啟動後 05/21 15:49
115F:→ OnlyRD: 初始化,整段 05/21 15:49
116F:→ OnlyRD: 操作只是計算記憶體中的偏移量再去計算而已。以為c 05/21 15:49
117F:→ OnlyRD: 碼農應該都對c 05/21 15:49
118F:→ OnlyRD: ompiler不陌生才對,因為c就是貼近底層的語言。整 05/21 15:49
119F:→ OnlyRD: 串看下來,好像 05/21 15:49
120F:→ OnlyRD: 不少人對語言標準、編譯器都沒啥掌握,避開底層工 05/21 15:49
121F:→ OnlyRD: 作吧。 05/21 15:49
122F:推 cia1099: 不會到看不懂,只是要回想思考一下,這就會讓人憤怒 05/21 20:32
123F:→ wulouise: 歷史因素 就像++i i++現在幾乎沒差除非compiler很爛 05/21 20:51
124F:推 wulouise: 有些時候當時那樣寫效率最高 但是現在不這樣寫不一定差 05/21 21:23
125F:推 OnlyRD: 樓上,要看你的i是什麼type,c++會更複雜一點,而 05/22 03:48
126F:→ OnlyRD: 且在某些支援特 05/22 03:48
127F:→ OnlyRD: 殊指令的cpu上有差別。另外++i和i++的語意不同,怎 05/22 03:48
128F:→ OnlyRD: 麼會沒差?如 05/22 03:48
129F:→ OnlyRD: 果是c++,換成class和template再試試看就知道了。 05/22 03:48
130F:推 wulouise: 可能我省略太多,是單行的i++;跟++i;不是所有情況 05/22 14:26
131F:推 DoubleFree: 看不懂就是爛code 我還滿同意的 05/24 10:30
132F:→ DoubleFree: 明明有更清楚的寫法幹嘛弄成跟大便一樣 05/24 10:30
133F:推 ohohohya: 基本上你待在公司就寫符合公司coding style的code就好 06/04 05:59
134F:→ ohohohya: 了 這段老實講沒到會被reviewer打槍的程度 大意也只是 06/04 05:59
135F:→ ohohohya: 從字串中間開始計算要拿哪個index字元的ascii加回*ptr 06/04 05:59
136F:→ ohohohya: 的內容而已 06/04 05:59







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BabyMother站內搜尋

TOP