这是错的还是我错过了什么(int count = 10,x;)

时间:2010-01-08 21:29:27

标签: c objective-c assignment-operator variable-assignment

在我阅读的书中看到了这个例子,它对我来说根本没有意义,我可能会遗漏一些东西,但似乎你用值'10'然后将值'x'赋值给你哪个甚至不是int。只是想知道这是否是一种有效的语法。

这本书说:

变量count和x以正常方式声明为整数变量。在下一行,变量intPtr被声明为“指向int的指针”。请注意,这两行声明可以组合成一行:

int count = 10, x, *intPtr;

这是它取自的程序:

#import <Foundation/Foundation.h>
int main (int argc, char *argv[ ])
{
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

    int count = 10, x;

    int *intPtr;

    intPtr = &count;

    x = *intPtr;

    NSLog (@"count = %i, x = %i", count, x);

    [pool drain];

    return 0;

}

5 个答案:

答案 0 :(得分:13)

这只是一个声明。声明由描述类型的“基本”部分的初始部分(声明说明符)和以逗号分隔的声明符序列组成,每个部分都声明一个单独的名称,并可能修改基本类型。在C中,您可以使用相同的声明说明符

声明多个名称
int count, x, *intptr;

相当于

int count;
int x;
int *intptr;

或者,您可以为每个声明者或其中的一些声明符添加初始值设定项。所以

int count = 10, x, *intptr;

相同
int count = 10;
int x;
int *intptr;

这就是它的全部内容。

答案 1 :(得分:3)

相当于

int count = 10;
int x;
int *intPtr;

答案 2 :(得分:1)

这是新手和专家 C(和C ++)程序员以及逗号运算符的常见错误来源。 通常的困惑:

int* p, pp;
pp = malloc( sizeof( int ) * N ); /* oops pp is just int, not a pointer */
...
int x;
x = 12, 13, 14; /* and the value of the x is ... */

答案 3 :(得分:0)

逗号意味着,x也是一个int,* intPtr也是int(而intPtr是指向int的指针)。 它像:

Aunts Mary, Jane, Daryl;
Mary is stupid;
Jane is Old;
Daryl is same as Mary;

答案 4 :(得分:0)

就像

int count, x;

除了将计数初始化为10