Upozornění kompilátoru (úroveň 2) C4307
'operator' : sign integral constant overflow
Operátor se používá ve výrazu, který má za následek celočíselnou konstantu přetečení přiděleného prostoru. Pro konstantu možná budete muset použít větší typ. A signed int
obsahuje menší hodnotu, než je hodnota, unsigned int
protože signed int
k reprezentaci znaménka používá jeden bit.
Následující ukázka vygeneruje C4307:
// C4307.cpp
// compile with: /W2
int i = 2000000000 + 2000000000; // C4307
int j = (unsigned)2000000000 + 2000000000; // OK
int main()
{
}