Linux 上の C 言語での典型的な面接の質問
过去多啦不再A梦
过去多啦不再A梦 2017-06-26 10:59:02
0
2
1021

GCC コンパイラを使用して Linux 上で次のプログラムを実行すると、出力結果はどうなりますか?

リーリー

これには型変換、データの切り捨て、埋め込みが含まれることを知っておいてください。しかし、具体的な説明がわかりませんか?

元の質問ソース: Linux 上の C 言語でのいくつかの古典的な面接の質問

过去多啦不再A梦
过去多啦不再A梦

全員に返信 (2)
巴扎黑

char的长度是 1 字节,并且,大多数的机器都将其视为有符号数的,所以它的表示范围是[-128, 127](参见《深入理解计算机系统》P27~P28)。所以,当你给c赋值 127 时,你执行了++cの場合、1 バイトしかないため、オーバーフローが発生します。

はマシンでは127を表します。2進数に変換すると、この01111111,可以看到,当你加 1 之后,结果就变成了10000000,由于在计算机内部,负数是用补码来表示的,所以就变成了 -128。之后再++cのようになり、-127になります。

異なる種類であっても、メモリの一部であるコンピューター内ではすべて同じように動作します。したがって、タイプは制限ではありません。

いいねを押す+0
    Peter_Zhu

    この質問は言語ではなく编译器をテストします。
    3 つの変数を定義します:

    リーリー

    C言語ではcが計算に参加する場合、cをs_cに変換するかu_cに変換するかは编译器によって決まります。

    gcc は c を符号付きとみなし、後続の計算と出力は符号付き数値として処理します。

    いいねを押す+0
      最新のダウンロード
      詳細>
      ウェブエフェクト
      公式サイト
      サイト素材
      フロントエンドテンプレート
      私たちについて 免責事項 Sitemap
      PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!