У меня проблема с моим кодом здесь. Предполагается, что программа рассчитана на секунды/год. Мне удалось исправить прыжок, но не смог исправить нормальный год. Надеюсь, кто-то может это исправить. (это функция, которая называется main)
Заметка
#include <iostream>
using namespace std;
void max_s()
{
unsigned long long s=1;
int h=s*60;
int d=h*24;
int m=30;
int ye=12;
long long t=s*h*d*m*ye;
long long t2=t+86400;
bool y,n;
y=true;
n=false;
cout<<"leapyear? 'y' for yes 'n' for no "<<endl;
cin>>y||n;
if(y=true)
{
cout<<"leapyear:"<<t2<<endl;
}
else
{
n=false;
cout<<t;
cout<<"seconds/year "<<endl;
}
}
if(y=true)
Это всегда true
поскольку оно будет оцениваться по назначению.
Должно быть:
if(y)
На самом деле это очень хорошая причина, чтобы понять, почему мы не пишем == true
при сравнении boolean
. Вы можете легко пропустить одно =
вызывать назначение вместо сравнения.
Кроме того, что такое cin>>y||n;
?
Совет, который спасает жизни. Как упоминал @FredLarson, включите предупреждения (-Wall
), и вы получите предупреждение об этом.
-Wall
компиляции -Wall
(или аналога для компиляторов, отличных от g ++) также должно предупреждать о случайном присваивании.
cin>>y||n;
сделать?