Yes, [] can be applied to any pointer. But, it is an operator, like "+".
So, a[i], is an operation involving a and i. In fact, it IS the operation
+. a[i] is *(a + i)
Now *(a + i) is the same as *(i + a). And thus, a[i] is the same as i[a].
Now, a is the same as a pointer, so we can write i[p]. A
Right. You said "[] can be applied to any pointer." That sounds right.
What's this a few emails ago with [] being applied to immediate values
in C99, like this
6[4]
Fred Weigel wrote:
Marc
sizeof is an operator
arr evaluates to the base of the array. [] is an operator.
since arr is the
Marc
sizeof is an operator
arr evaluates to the base of the array. [] is an operator.
since arr is the base of the array, (arr) is the same value (putting
in the parentheses doesn't change a thing). The precedence is identical!
so, if "sizeof arr[0]" works, then "sizeof (arr) [0]" should be ide
On Wed, Nov 14, 2007 at 12:39:18AM +0100, grischka wrote:
> > Could a C guru out there please tell me why the following works?
> > Extra points if you can explain why it makes sense.
> >
> > #include
> >
> > int main(){
> > int arr[10];
> > printf("%d\n",sizeof arr[0]); // ok
> > printf("%d\
On Nov 14, 2007, at 5:39 PM, Mike wrote:
"(arr)[0]" would be valid yes. But "40[0]" should be invalid, right?
Yes, and it is. "40[arr]" is valid of course.
-Chris
___
Tinycc-devel mailing list
Tinycc-devel@nongnu.org
http://lists.nongnu.org/mai
"(arr)[0]" would be valid yes. But "40[0]" should be invalid, right?
Chris Lattner wrote:
On Nov 14, 2007, at 5:18 PM, Mike wrote:
>>> printf("%d\n",sizeof(arr)[0]); // ok, but why?
Why should that be valid syntax? Is C99 really weird or what?
(its a immediate value being used in place of a
On Nov 14, 2007, at 5:18 PM, Mike wrote:
>>> printf("%d\n",sizeof(arr)[0]); // ok, but why?
Why should that be valid syntax? Is C99 really weird or what?
(its a immediate value being used in place of a pointer.)
The C99 grammar says that sizeof is:
unary-expression:
sizeof unary-expressio
>>> printf("%d\n",sizeof(arr)[0]); // ok, but why?
Why should that be valid syntax? Is C99 really weird or what?
(its a immediate value being used in place of a pointer.)
-Mike
Marc Andre Tanner wrote:
On Wed, Nov 14, 2007 at 12:39:18AM +0100, grischka wrote:
Could a C guru out there please te
On Wed, Nov 14, 2007 at 12:39:18AM +0100, grischka wrote:
> > Could a C guru out there please tell me why the following works?
> > Extra points if you can explain why it makes sense.
> >
> > #include
> >
> > int main(){
> > int arr[10];
> > printf("%d\n",sizeof arr[0]); // ok
> > printf("%d\n"
On Nov 13, 2007, at 3:39 PM, grischka wrote:
Could a C guru out there please tell me why the following works?
Extra points if you can explain why it makes sense.
#include
int main(){
int arr[10];
printf("%d\n",sizeof arr[0]); // ok
printf("%d\n",sizeof(arr[0])); // ok
printf("%d\n",sizeof(a
> Could a C guru out there please tell me why the following works?
> Extra points if you can explain why it makes sense.
>
> #include
>
> int main(){
> int arr[10];
> printf("%d\n",sizeof arr[0]); // ok
> printf("%d\n",sizeof(arr[0])); // ok
> printf("%d\n",sizeof(arr)[0]); // ok, but why?
> r
Marc Andre Tanner wrote:
> Could a C guru out there please tell me why the following works? Extra points
> if you can explain why it makes sense.
>
> #include
>
> int main(){
> int arr[10];
> printf("%d\n",sizeof arr[0]); // ok
> printf("%d\n",sizeof(arr[0])); // ok
> pr
Hi,
Could a C guru out there please tell me why the following works? Extra points
if you can explain why it makes sense.
#include
int main(){
int arr[10];
printf("%d\n",sizeof arr[0]); // ok
printf("%d\n",sizeof(arr[0])); // ok
printf("%d\n",sizeof(arr)[0]); //
13 matches
Mail list logo