c - Implicit Type Conversion -
#include<stdio.h> int main(void) { signed int a=-1; unsigned int b=1; int c= a+b; printf("%d\n",c); return 0; }
according rule of implicit type conversion, if 1 operand unsigned int
,the other converted unsigned int
, result unsigned int
in binary operation. here b
unsigned int
, a
should type casted unsigned int
.as unsigned int +ve , value of a
1.so c=1+1=2
.but output 0
.how ?
-1, when cast unsigned become largest possible value type -- e.g. 32-bit unsigned, it'll 4,294,967,295. when add 1 that, value "wraps around" 0.
Comments
Post a Comment