Re: [請益] 有關學習程式語言
版上各位大大所持的意見好像都不太一樣
真是個很好的討論園地
程式技巧確實重要,但會個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
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
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
06/20 14:03, 8F
→
06/20 14:03, , 9F
06/20 14:03, 9F
→
06/20 22:02, , 10F
06/20 22:02, 10F
推
06/21 12:56, , 11F
06/21 12:56, 11F
→
06/21 12:57, , 12F
06/21 12:57, 12F
→
06/21 12:58, , 13F
06/21 12:58, 13F
討論串 (同標題文章)