作者dickjas (夏天的航海記)
看板Soft_Job
標題Re: [請益] 有關學習程式語言
時間Mon Jun 20 12:06:33 2011
版上各位大大所持的意見好像都不太一樣
真是個很好的討論園地
程式技巧確實重要,但會個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
→ x000032001:所以第二題沒配置空間是? 06/20 12:11
→ james732:沒配置空間不會影響編譯結果是沒錯啦 XD 06/20 12:12
→ dickjas:為什麼一定要配置空間@@~~ 06/20 12:17
→ Minilogo:沒配置空間會寫到不該寫的記憶體 06/20 12:30
→ i386:寫到不該寫得記憶體會有問題,但題目好像是問compile哪裡會錯? 06/20 12:49
推 jackyu:一定要配置空間~ 06/20 12:57
※ 編輯: dickjas 來自: 140.116.158.32 (06/20 13:30)
→ dream1124:實在不懂為什麼大家幾乎用中文表達,但"編譯"都要打英文? 06/20 14:01
→ dream1124:沒人覺得這長串下來的中文段落都會摻個compiler很怪?> 06/20 14:03
→ dream1124:而且有些還把名詞當動詞用, 要不就是拼錯 06/20 14:03
→ shadow0326:用的爽就好啊 我也很喜歡說"de了一個bug" 又不是聽不懂 06/20 22:02
推 iman00b:第二題我沒看到是 compile 你是對的~ 06/21 12:56
→ iman00b:如果用 C89 連 // 都不能用~ 06/21 12:57
→ iman00b:指標沒配置只是會 segment fault 並不會編不過~ 06/21 12:58