LoginSignup
1
1

More than 3 years have passed since last update.

[C++] しょうもないバグ 記録

Last updated at Posted at 2020-04-21

はじめに

AtCoderのためにC++を学習し始めた初心者。
些細なミスに取り乱され、バグを探すこと気づけば一時間。

二度と同じミスをしないために、記録
(テキストエディタはVScode(WindowsPowerShell))

if文(等価演算子)

if(n=0){  }
else{  }

正解n==0 
ビルドできちゃうんだよね。if(n=0)==if(0)と判定されます。
(追記:g++コンパイル時にg++ -Wallのようにオプション付けたら警告してくれました。)

vectorの標準入力

int n; cin >> n;           //vectorの要素数
vector<int> a;           
for(int i=0;i<n;i++){      
    cin >> a[i];           //vectorの標準入力
}

正解vector<int> a(n)
cin >> a[i] この形は、vectorの定義時に要素数を定めないといけません。
要素数を指定しない場合は、a.push_back()を使います。

for文

int a = 3; int b = 7 
for(int i = a; a <= b; i++){  }  // i=aからbまで

正解for(int i = a; i <= b; i++){ }
ループし続けてしまいました.....😢

出力表示、桁数

double a = 23456789.123

cout << a;

// 出力:2.34568e+007 

出力結果が指数表記になっています。このままでAtcoderに提出すると、解釈してくれません。
そこで、以下のようにすることで、小数点以下の桁数を指定しつつ実数表記できます。

// printfを使った方法
printf(%.2,a);
// 出力: 23456789.12

// coutを使った方法
cout << fixed << setprecision(2) << a;
// 出力: 23456789.12

最後に

都度更新。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1