[問題] int()的奇怪現象

看板C_and_CPP (C/C++)作者 (六円)時間16年前 (2009/02/27 01:12), 編輯推噓6(608)
留言14則, 8人參與, 最新討論串1/4 (看更多)
#include <iostream> #include <cmath> #include <string> using namespace std; int main() { int m, x, y, z; input: cout<<"input: "; cin>>x>>y>>z; cin.get(); if (x<0) goto input; if (y<0) goto input; if (z=0) goto input; m = int((4.0/7)*(pow(y,1.75)-pow(x,1.75))+(8.0/z)); cout<<m<<endl; system("pause"); return(0); } 兩個奇怪現象: 1. 輸入1 1 8 得1 但是輸入2 2 8 得0 (兩者應該一樣的) 2. 第三個數字輸入0 程式並不會跳到input重來 PS: 加cin.get()是因為之後還要加cin.getline() 想要請問是哪裡的問題 毫無頭緒... 先感謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.135.160.55

02/27 01:12, , 1F
if(z=0) // 好像該用 == ?
02/27 01:12, 1F

02/27 01:29, , 2F
不會跳回input是因為if(z=0)是永遠進不去if(z==0)才可以
02/27 01:29, 2F

02/27 01:53, , 3F
碰到這種東西...多寫 if (0==z) 就不會出包了..
02/27 01:53, 3F

02/27 01:53, , 4F
少打一個= 會變成 0=z, compiler會靠背不會讓你過
02/27 01:53, 4F

02/27 02:17, , 5F
噢...原來如此 那只剩第一個問題 謝謝各位~
02/27 02:17, 5F

02/27 10:23, , 6F
我輸入 1 1 8 的結果和 2 2 8 一樣都是 1
02/27 10:23, 6F

02/27 10:23, , 7F
(已改成 z==0)
02/27 10:23, 7F

02/27 12:38, , 8F
如果不加int(), m在2 2 8的輸入後是1, 但int()後變成0
02/27 12:38, 8F

02/27 13:08, , 9F
我覺得是運算的問題~浮點數和整數運算造成的錯誤~
02/27 13:08, 9F

02/27 13:08, , 10F
我把變數型態從int改成double就正常了~要在轉換回int
02/27 13:08, 10F

02/27 13:10, , 11F
就加static_cast<int>(運算式)吧
02/27 13:10, 11F

02/27 13:14, , 12F
請問這裡用static_cast<int>的作用是??
02/27 13:14, 12F

02/27 13:57, , 13F
C++ style 轉型
02/27 13:57, 13F

02/27 13:59, , 14F
ㄟ~~我就算用這個轉型, 結果好像一樣是0啊??
02/27 13:59, 14F
文章代碼(AID): #19firkzj (C_and_CPP)
文章代碼(AID): #19firkzj (C_and_CPP)