C变量混乱

时间:2015-10-15 23:07:02

标签: c variables integer

在我的一项任务中,我看到使用了这一行:

int index = -1, k;

我不确定当一个变量有条目时会发生什么。 当它有两个条目时,变量“index”究竟是什么?

6 个答案:

答案 0 :(得分:4)

这是2个变量的定义,两个变量类型"use strict"; var URL = "https://api.instagram.com/v1/media/popular?client_id=642176ece1e7445e99244cec26f4de1f"; $.ajax({ type: "GET", url: URL, dataType: "jsonp", success: onInstagramSuccess, error: onInstagramError }); function onInstagramSuccess(result){ if(result.meta.code == 200){ console.log(result.data); } } function onInstagramError(result){ if(result.meta.code == 404){ alert('fail'); alert(result.meta.error_message); } } intindex。仅使用k初始化index,并且-1未初始化。

答案 1 :(得分:2)

它只是定义了两个<customErrors mode="Off" />类型的变量,其中一个(int)初始化为-1,另一个(index)未初始化。< / p>

这是糟糕的风格,因为它看起来真的很混乱。

答案 2 :(得分:1)

正如其他几位人士所说,这是两个变量的声明。它是100%相当于

int index = -1;
int k;

现代编码风格会鼓励您以这种方式编写。然而 - 那里有很多旧C,在20世纪80年代和90年代,分组变量声明是首选风格。选择一个随机的尘土飞扬的套牌我保证你你会看到像

这样的东西
register f, r, (*hstat)(), (*istat)(), (*qstat)();
int status;

或者

extern char level;
int newtry[31],newother[31],*r,*q,*p,n,sum,first;
int ii,lastwhite,lastred;

所以你需要了解它的含义。可悲的是,它们可能会让人感到困惑,例如。

int const* a, b;

相当于

const int *a;
int b;

这就是为什么现代编码风格更喜欢每个声明的一个变量。

(为什么人们更喜欢在当天把声明分组?我不知道。就我个人而言,我猜它会帮助你在80x25玻璃杯上看到更多的代码,但我从来没有真正拥有过经验,所以。)

答案 3 :(得分:0)

在此代码&#34;索引&#34;和&#34; k&#34;两者都是整数类型变量和变量&#34; index&#34;由-1分配(即索引的值为-1)。它被称为变量初始化。

答案 4 :(得分:-2)

假设这是函数范围内的代码:

int index = -1, k;

将与

完全相同
int index = -1;
int k;

或与

相同
int index, k;
index = -1;

即使代码不等同于C标准,世界上没有任何已知的C编译器会将这三个代码块视为不同。

在C中你可以一次声明多个相同类型的变量(int index, k;)或者你定义一个变量(同时声明和初始化一个变量,int index = -1;),或者你可以做同时,声明多个并初始化它们或只是其中一个,如你的情况(int index = -1, k;)。

答案 5 :(得分:-2)

在C中,逗号运算符,低于优先级低于赋值运算符=。因此,表达式

int index = -1, k;

被解析为

//The parentheses are not legal in C, but it's what the parser does.
int ((index = -1), k);

你看,该行声明了int类型的变量。第一个名为index,初始化为-1,第二个名为k,未初始化。

您可以在此处找到运营商优先顺序的完整概述:
https://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B#Operator_precedence
请注意,逗号运算符是该列表中的最后一个!

同样,您可能会看到像这样的C代码或类似代码:

if(condition) foo += 7, doSomething();
while(i += 2, i < 42) ...;

这相当于

if(condition) {
    foo += 7;
    doSomething();
}

i += 2;
while(i < 42) {
    ...
    i += 2;
}

但更简洁(许多C程序员喜欢简洁!)。同样,在这两种情况下,逗号运算符用于将两个事物融合到一个语句中,这样可以避免写入完整的块{}并防止重复增量i += 2

逗号运算符的这种用法是好还是坏都是品味和环境的问题。但你可以肯定在野外找到它的所有可能用途。