返回列表 發帖
本帖最後由 43777061 於 2018-10-10 19:49 編輯
先謝謝回復和教學
雖然我還是不太懂課本把a,b,c,d,x寫成float的涵義



上面有兩段程式碼,第一個 ...
27756325 發表於 2018-10-10 17:10
  1. float a,b,c,d,x=6;
複製代碼
這行的意思是宣告5個float變數:a、b、...、x

其中x存放的值是6,其他a~b則是沒有值
  1. int f=20;
複製代碼
宣告一個int變數f,存放的值是20
  1. a=b=c=d=float(f);
複製代碼
在講解這段程式前,我想要先講一個小故事

某天我想要宣告5個變數:a、b、...、e,而且我想讓這五個變數存放一樣的值,假設我現在想要存放1好了

我原本的程式長這樣
  1. int a=1, b=1, c=1, d=1, e=1;
複製代碼
明明這五個變數所要存放的值都一樣,卻要一個個打,實在是太沒效率了,所以我去上網查資料,改用這種方式宣告
  1. int a=b=c=d=e=1;
複製代碼
是不是跟你的程式長得很像?

再看一次你的程式
  1. a=b=c=d=float(f);
複製代碼
它的意思是要讓a、b、...、f都有一樣的值,前面有講過a~d都是空值,而float是一個存放20的int變數,所以a、b、...、f的值都會變成20

但是a~d都是float,f是int,所以要把f轉換成float

這就像你不能把int賦值給sring,例如下面這段程式碼
  1. int num1 = 30;
  2. string num2 = "20";
  3. //錯誤的語法! 這兩個變數的資料型態不同
  4. num1 = num2;

  5. //這才對,因為你有用stoi()把num2從string轉換成int
  6. num1 = stoi(num2);
複製代碼
-

再來看看課本的程式
  1. <<"d /= x => d = "<<(d /= x)<<endl
複製代碼
你注意d是int,x是float,當變數在計算時,擁有較高優先順序的資料型態會決定精確值

因為float的優先順序高於int

所以"d /= x"這個運算是float除法

d是20,x是6,20沒有辦法被6整除,而此時的運算是float除法,所以運算結果會跑出小數點

至於你的程式,你讓d和x的資料型態都為int,所以兩變數相除時是int除法

因此運算結果只會出現整數,不會出現小數點

TOP

欸! 好屌的solo喔

https://youtu.be/H2shxCldc_k?t=140

TOP

OwO!!!

水母哥你這個部分教得比教授還猛

超級感謝你詳細的教學,我先跪了Orz

等等聽你推薦那段solo ...
27756325 發表於 2018-10-10 20:40

https://www.youtube.com/watch?v=SDTZ7iX4vTQ

這首好聽,有迷幻的感覺,我強烈建議你先看mv,不要看歌詞

看完mv後再看歌詞

TOP

這首好聽,有迷幻的感覺,我強烈建議你先看mv,不要看歌詞

看完mv後再 ...
43777061 發表於 2018-10-13 00:02


哦哦哦你之前那首我也喜歡

我常常聽那首但不知道歌名!!

搭火車時聽看看好惹,謝謝啦
羊毛出在狗身上,豬來買單

TOP

因為C++作業參酌繳交名次

我昨天一直在等教授公告作業

結果他趁我去洗澡,10:34的時候上傳題目

嗚嗚嗚⋯ ...
27756325 發表於 2018-10-13 05:56

是上傳秒收回逆
不死身!不老不死!呵呵呵…STAND POWER!

TOP

因為沒在第一時間上傳答案

少拿一些時間紅利

和滿分無緣惹
27756325 發表於 2018-10-13 23:53

說到底10點半也一堆人睡了吧


而且沒滿分會被當?
不死身!不老不死!呵呵呵…STAND POWER!

TOP

想印出31-100間的質數
可以使用for迴圈(非巢狀)的方式嗎?


我只會用巢狀寫,偏偏教授又還沒教到巢狀......
羊毛出在狗身上,豬來買單

TOP

想印出31-100間的質數
可以使用for迴圈(非巢狀)的方式嗎?


我只會用巢狀寫,偏偏教授又還沒教到巢狀...... ...
27756325 發表於 2018-10-31 16:01

兩個nested loops
  1. for (int i=0; i< 100; ++i)
  2.   for (int j=0; j< 100; ++j)
  3.     ...
複製代碼
可以簡化成一個
  1. for (int z=0; z< 100*100; ++z)
  2. {
  3.   i = z / 100;
  4.   j = z % 100;
  5. }
複製代碼
剩下的交給你,加油

TOP

兩個nested loops可以簡化成一個剩下的交給你,加油
43777061 發表於 2018-10-31 23:23

感謝水母哥提點
然而我還是不會寫
羊毛出在狗身上,豬來買單

TOP

把數字印出來看了之後
我覺得可能需要相除取餘數
再確認餘數是否為0
未命名.png
2018-11-1 09:32


可是一取餘數
畫面就甚麼都印不出來


白白的

未命名2.png
2018-11-1 09:38
羊毛出在狗身上,豬來買單

TOP

返回列表