質問: int a; scanf(“%d”,a); この文で、aに2000000000000と言った容量がオーバーする値をユーザーが入力した時に再入力を要求するプログラムはどのように書きますか?
回答: まず、`scanf(“%d”,a);`ではなく`scanf(“%d”, &a);`とポインタを渡す必要があります。 それはさておき、`int`に入るサイズをはみ出した場合の動作は、どうなるか定義されていないようです。試しにpaiza.ioで動かしてみたところ、「-1が代入される」という現象が発生しました。 確実を期すなら、「`fscanf`などで1行読み込む→`strtol`で変換して`errno`でオーバーフローをチェックする」というような流れになるでしょう。