質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

795閲覧

C++の開発環境によって実行結果が違う原因を教えてください。

HearthXml

総合スコア51

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

2クリップ

投稿2018/04/08 11:54

競技プログラミングの問題
3 8 2
を入力して、
3
4
7
8
を返すプログラムを組むことになってので下記のように書きました。
win10のvisual stdio2017(コンパイラはvisual stdio2017で入れたもの)では正常に出力できたのですが、
AtcoderのC++14 (GCC 5.4.1)ではTime Limit Exceeded (TLE) - 時間切れになります。
他のc++を選択しても同様の結果になってしまいます。
出力は
3
3
3
3
3
...
です。
別のオンライン実行環境でも同様の結果がでました。

C++

1#include<iostream> 2#include<string> 3using namespace std; 4int main() { 5 int a, b, c; 6 cin >> a >> b >> c; 7 8 int x = a; 9 if (c >= b - a) { 10 for ( x; x < b + 1; x++) 11 { 12 cout << x << endl; 13 } 14 exit(0); 15 } 16 17 int i; 18 for (i = 0; i<c; i = i++) { 19 cout << (a + i) << endl; 20 } 21 for (i = 0; i<c; i = i++) { 22 if (a+c-1 >= b - (c - i - 1)) { 23 continue; 24 } 25 cout << (b - (c - i - 1)) << endl; 26 } 27 return 0; 28}

ちなみにローカルのコンパイラをGCCやclangにしないのは環境構築に躓き、visual stdio2017のc++コンパイラをそのまま使っているからです。
回答よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

for (i = 0; i<c; i = i++) {

この i=i++ ってのまずいです。
i の値は不定になります

投稿2018/04/08 12:00

y_waiwai

総合スコア87774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

HearthXml

2018/04/08 12:05 編集

ありがとうございます。解決しました。 こういう単純なエラーを防ぐためにIDEを使用しているのですが、visual stdioが特殊だからエラーが出ないんですかね。
y_waiwai

2018/04/08 12:07

いや、文法エラーでもないのでエラーの出しようがないのかと。 これは人間が気をつけないとしよーがないですねえ
fermat

2018/04/08 12:14

通りすがりですが、勉強になりましたΣ(゚Д゚)
HearthXml

2018/04/08 12:21

https://blog.cles.jp/item/6362 見つけたものもの貼っときます。 ポイントはある副作用完了点から、その次の副作用完了点までの間で1つの変数を複数回書き換えるような動作は認められていないということです。 ってことであってますかね。
y_waiwai

2018/04/08 12:23

そういうことですね。
HearthXml

2018/04/08 12:24

ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問