argv will contain "1" (as string), we have to convert into integer with atoi() function.
Bhagat Singh said:
(Fri, Nov 26, 2010 01:05:18 PM)
argv is not declare automatically
so we never used argv
The Prodigy said:
(Wed, Dec 29, 2010 08:20:17 AM)
The command line arguments are taken as strings (char *) and not integers.
(Wed, Jan 19, 2011 10:39:02 AM)
@Brindha : perfect
(Wed, Feb 9, 2011 11:58:11 AM)
argv is argument vector and it is string. here it is tried to concatenate string. C does not provide the string concatenation it this way. So that error!
(Sun, Jul 17, 2011 08:00:52 AM)
I'm getting the error even if I put atoi() function. What to do?
(Mon, Jul 18, 2011 02:54:34 AM)
All the confusion accounts to the generosity of our loveable C compiler. The C standard says "standard conversions" but never defines an upper boundary for the conversions. Hence the compiler is let loose - it tries and performs all sorts of conversions and when successful(which it always is!!) says "Fine fine the program has no errors - yeah but this is a warning... "
For example, int a = "1";
"1" is a char*, so the RHS is an address to the string. The compiler converts this address to an integer and assigns it to int.
But the problem is the binary operator : +
The + operator has been defined to work only with a predefined set of types, and not to work on a predefined set of types. For instance, C standard says Ok + operator, you can work on integers, floats, doubles, blah.. but you shouldnt work on two pointers(since I forbid arithmetic operations with two pointers).
So if you write :
int j = argv + 2; // WARNING, NO ERROR
int k = argv + "2"; // 2 pointers?? error x-(
So just make sure you do the appropriate type-casts(like the one answered above)
(Wed, Dec 7, 2011 04:05:10 PM)
argv[i] is pointer to strings in an argument.So argv,argv or whatever are pointer to respective strings pointed to by argv[index].
Since if we look at pointer arithmetic, then two pointer's addition is not allowable.
So there is an error.
But if we change type using typecast,and after on changing type to integer, these are then merely an constant int value.