強要に関する多肢選択問題について考えています。a、b、c、または d の 4 つの例の 1 つは強制の例です。AかBに絞ったのですが、どちらにしようか迷っています。だれか、一方が強制で、もう一方がそうでない理由を説明してください。
A)
string s="tomat";
char c='o';
s=s+c;
文字と文字列という 2 つの異なる型が追加されているため、A が正しいと思いました。c が文字列に昇格されることを意味するため、強制されます。
B)
double x=1.0;
double y=2.0;
int i=(int)(x+y);
double(x + y)がintに変換されてiに配置されるため、Bが正解だとも思いました。しかし、「int i = x + y」のように受動的にではなく、(int) を使用して積極的に行われているため、これは間違っている可能性があると思いました。
どちらも正解ではないと思いますが、残りの 2 つのオプションをリストします。
ハ)
char A=0x20;
A = A << 1 | 0x01;
cout << A << endl;
D)
double x=1.0;
double y=x+1;
return 0;
私はただ答えを探しているのではなく、説明を求めています。私は強制についてたくさんのことを読みましたが、AとBの両方が正しい答えのように見えます。では、なぜ一方が正しく、もう一方が正しくないのでしょうか。