Re: [請益] 有關學習程式語言

看板Soft_Job作者 (夏天的航海記)時間13年前 (2011/06/20 12:06), 編輯推噓2(2011)
留言13則, 9人參與, 最新討論串11/11 (看更多)
版上各位大大所持的意見好像都不太一樣 真是個很好的討論園地 程式技巧確實重要,但會個80%,就足以寫code了 copiler一次過很強沒錯,不過只能證明語法正確 邏輯錯誤讓你怎麼找都找不到 這時就不是程式技巧可以彌補了,這就要看你的寫法和程式架構了 其實寫過多種程式的人,大概就知道我想表達的意思了 會講domain knowledge與會不會寫程式似乎沒有很大的關連 寫程式是熟練,專業知識卻是要寫程式前就必須要會的 不然連怎麼下手都不知道。 況且通常會domain knowledge的往往職位比較高 只有像我這種寫程式的以前常常自以為上面都笨蛋@@~~ 原來我才是笨蛋 以上小小見解,接下來我來解題一下 因為有人寫信來問我答案,還有版上似乎也提供到錯誤答案了 ------------------------------------------------------- //第一題 //輸出結果為? #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { char c = 130; unsigned char vc = c; printf("%d \n",c); printf("%d \n",vc); system("PAUSE"); return 0; } //輸出結果為-126,130 //因為char的取值範圍是-128至127 //首先要瞭解,127的八位二進制表示為01111111 //而-128的八位二進制並非為符號,而是11111111 //這是因為在程序中,第八個bit表示符號 //這邊表示0則為整數,表示1則為負數。 //這邊char c = 130,已超過char的取值範圍 //程序將130轉換成八位二進制,即10000010 //此時程序判訂該數為負數,當通過print函數時 //再次將該數轉換成十進制表示 //即-2^7 + 2^1 = -128+2 = -126 ============================================== //compile哪裡會錯? #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { char name1[] = "Niol"; char name2[4] = "Jack"; char *name; //int i; for(int i=0;i<4;i++ ) name[i]=name1[i]; name[5]=" "; for(int i=0;i<4;i++ ) name[5+i]=name1[i]; system("PAUSE"); return 0; } //錯在for迴圈內部宣告int i=0; //這是屬於C99 Mode規範 //其中將//int i;中的註解拿調 //再將for迴圈的int i=0改為i=0即可 //因為C99 Mode不允許int在for迴圈內宣告 //但並非所有的compiler都是走C99 mode規範 //所以我認為出這種題目的疑惑蠻多的 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.255.169.211

06/20 12:11, , 1F
所以第二題沒配置空間是?
06/20 12:11, 1F

06/20 12:12, , 2F
沒配置空間不會影響編譯結果是沒錯啦 XD
06/20 12:12, 2F

06/20 12:17, , 3F
為什麼一定要配置空間@@~~
06/20 12:17, 3F

06/20 12:30, , 4F
沒配置空間會寫到不該寫的記憶體
06/20 12:30, 4F

06/20 12:49, , 5F
寫到不該寫得記憶體會有問題,但題目好像是問compile哪裡會錯?
06/20 12:49, 5F

06/20 12:57, , 6F
一定要配置空間~
06/20 12:57, 6F
※ 編輯: dickjas 來自: 140.116.158.32 (06/20 13:30)

06/20 14:01, , 7F
實在不懂為什麼大家幾乎用中文表達,但"編譯"都要打英文?
06/20 14:01, 7F

06/20 14:03, , 8F
沒人覺得這長串下來的中文段落都會摻個compiler很怪?>
06/20 14:03, 8F

06/20 14:03, , 9F
而且有些還把名詞當動詞用, 要不就是拼錯
06/20 14:03, 9F

06/20 22:02, , 10F
用的爽就好啊 我也很喜歡說"de了一個bug" 又不是聽不懂
06/20 22:02, 10F

06/21 12:56, , 11F
第二題我沒看到是 compile 你是對的~
06/21 12:56, 11F

06/21 12:57, , 12F
如果用 C89 連 // 都不能用~
06/21 12:57, 12F

06/21 12:58, , 13F
指標沒配置只是會 segment fault 並不會編不過~
06/21 12:58, 13F
文章代碼(AID): #1D_iTDkT (Soft_Job)
討論串 (同標題文章)
文章代碼(AID): #1D_iTDkT (Soft_Job)