1

このコードを g++ -Wall でコンパイルしましたが、警告/エラーは発生しません。

#include "stdio.h"

int main() {
        long x = 1000000000000;
        int y = x;
        printf("%ld %d\n", x, y);
        return 0;
}

出力は期待されるものです:

1000000000000 -727379968

しかし、この場合、コンパイラーは暗黙の変換/切り捨てを防ぐべきではありませんか?

g++ (GCC) 4.1.2 20071124 (Red Hat 4.1.2-42)
4

1 に答える 1

8

-Wconversionに含まれていないものを探していると思います-Wall。g++ 4.4 および 4.5 で確実に警告が表示されましたが、以前のバージョンをテストするためのアクセス権がありません。warning: conversion to 'int' from 'long long int' may alter its value( long longlongがまだ32ビットである32ビットビルドを生成していたため、使用しました)。

于 2013-08-30T16:41:50.883 に答える