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

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 学習者の迅速な成長を支援します!