objective c - Why does an NSInteger variable have to be cast to long when used as a format argument? -
nsinteger myint = 1804809223; nslog(@"%i", myint); <==== the code above produces error:
values of type "nsinteger" should not used format arguments: add explicit cast 'long' instead. the correct nslog message nslog(@"%lg", (long) myint); why have convert integer value of myint long if want value display?
you warning if compile on os x (64-bit), because on platform nsinteger defined long , 64-bit integer. %i format, on other hand, int, 32-bit. format , actual parameter not match in size.
since nsinteger 32-bit or 64-bit, depending on platform, compiler recommends add cast long generally.
update: since ios 7 supports 64-bit well, can same warning when compiling ios.
Comments
Post a Comment