Neben zwei chars produziert int

Habe ich eine einfache Programm-und es kompiliert mit GCC-4.4/4.5 wie folgt:

int main ()
{
  char u = 10;
  char x = 'x';
  char i = u + x;

  return 0;
}

g++ -c -Wconversion a.cpp

Und ich habe die folgenden:

a.cpp: In function int main()’:
a.cpp:5:16: warning: conversion to char from int may alter its value

Die gleiche Warnung: ich habe für folgenden code:

  unsigned short u = 10;
  unsigned short x = 0;
  unsigned short i = u + x;

a.cpp: In function int main()’:
a.cpp:5:16: warning: conversion to short unsigned int from int may alter its value

Könnte jemand bitte erklären Sie mir, warum neben zwei chars (oder zwei unsigned shorts) produziert int?
Ist es ein compiler-bug oder ist es standard-konform?

Dank.

  • Ich Frage mich, ob es einige compiler-Optimierung Los hier, wobei das 'u' in Ihrer Ergänzung wird nur immer durch das literal mit dem Wert 10. Aber das scheint ziemlich buggy und non-standards-compiant.
InformationsquelleAutor Rom098 | 2011-01-27
Schreibe einen Kommentar