标签: variable-declaration

绕过定义时如何使用变量?

在我看来,定义总是意味着存储分配.

在以下代码中,int i在程序堆栈上分配一个4字节(通常)存储并将其绑定到i,i = 3并将3分配给该存储.但是因为goto,定义被绕过,这意味着没有分配存储空间i.

我听说局部变量在函数的入口处(f()在这种情况下)分配在它们所在的位置,或者在定义点处.

但无论哪种方式,如何i在尚未定义的情况下使用它(根本没有存储空间)?执行时分配给值3的位置在哪里i = 3

void f()
{
    goto label;
    int i;

label:
    i = 3;
    cout << i << endl; //prints 3 successfully
}
Run Code Online (Sandbox Code Playgroud)

c++ scope variable-declaration

36
推荐指数
4
解决办法
1038
查看次数

C错误:int之前的预期表达式

当我尝试以下代码时,我得到了提到的错误.

if(a==1)
  int b =10;
Run Code Online (Sandbox Code Playgroud)

但以下在语法上是正确的

if(a==1)
{
   int b = 10;
}
Run Code Online (Sandbox Code Playgroud)

为什么是这样?

c syntax-error variable-declaration conditional-statements

33
推荐指数
1
解决办法
11万
查看次数

可以在C语句中声明后初始化数组吗?

有没有办法在实际初始化之前声明这样的变量?

    CGFloat components[8] = {
        0.0, 0.0, 0.0, 0.0,
        0.0, 0.0, 0.0, 0.15
    };
Run Code Online (Sandbox Code Playgroud)

我想它声明这样的东西(除了这不起作用):

    CGFloat components[8];
    components[8] = {
        0.0, 0.0, 0.0, 0.0,
        0.0, 0.0, 0.0, 0.15
    };
Run Code Online (Sandbox Code Playgroud)

c variable-declaration

28
推荐指数
2
解决办法
2万
查看次数

声明和未声明变量的效果

JavaScript声明和未声明变量之间的主要区别是什么,因为delete运算符不适用于声明的变量?

 var y = 43;     // declares a new variable
 x = 42;

 delete x;       // returns true  (x is a property of the global object and can be deleted)
 delete y;       // returns false (delete doesn't affect variable names) 
Run Code Online (Sandbox Code Playgroud)

为什么会这样?全局声明的变量也是窗口对象的属性,为什么不能删除它?

javascript variables global-variables variable-declaration

28
推荐指数
1
解决办法
1万
查看次数

如何在MySQL中声明一个常规查询变量?

如何在MySQL中为普通查询声明变量?

例如,

declare @myVar date;
set @myVar = something;

select * from someTable where someColumn = @myVar;
Run Code Online (Sandbox Code Playgroud)

我试过,语法似乎是错的......我错过了什么?

mysql variables variable-declaration

27
推荐指数
1
解决办法
5万
查看次数

我可以在for循环的初始化中声明不同类型的变量吗?

为什么这个C++代码不能在VS2010下编译:

for ( int a = 0, short b = 0; a < 10; ++a, ++b ) {}
Run Code Online (Sandbox Code Playgroud)

虽然这个做了:

short b = 0;
for ( int a = 0; a < 10; ++a, ++b ) {}
Run Code Online (Sandbox Code Playgroud)

是否禁止在for-loop初始化程序中声明两个不同类型的变量?如果是这样,你怎么解决它?

c++ scope for-loop initializer variable-declaration

24
推荐指数
2
解决办法
5150
查看次数

数字文字后面的C#后缀

我是C#的新手,想要了解价值观是如何运作的.如果我查看一个正常的整数值,它有三个重要部分:类型,名称和值.

int testInt = 3;
 |    |       |
Type Name   Value
Run Code Online (Sandbox Code Playgroud)

但是当我看到浮点值时,由于后缀,它会让我感到困惑F.

float testFloat = 3.0F;
  |      |        |  |
 Type   Name  Value Type
Run Code Online (Sandbox Code Playgroud)

现在有两种类型,如果没有F后缀,则值为double.但是,当我可以用声明双变量时,为什么会发生这种情况

double testDouble = 3.0D;
Run Code Online (Sandbox Code Playgroud)

double作为第一个词应该是足够了,不应该吗?带有后缀M的十进制值也是如此:

decimal testDecimal = 3.0M;
Run Code Online (Sandbox Code Playgroud)

然后,当涉及到其他后缀时,它开始让我感到困惑:

ulong bigOne = 2985825802805280508UL;
Run Code Online (Sandbox Code Playgroud)

ulong之前在测试中使用过,并且知道它u是"无符号"的,并且它的值是正常值的两倍.然后你再次得到U作为后缀,谷歌的文字就像谷歌说的那样.据我了解,"文字"是包含数字的值类型.但我不明白的是,即使没有后缀,为什么这个ulong工作呢?

ulong bigOne = 2985825802805280508;
Run Code Online (Sandbox Code Playgroud)

然后我尝试了不同的东西来理解后缀的重要性

byte testLong = 12312UL;
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为字节(254)的值太高而后缀不会将其转换为长变量.

为什么第一个单词(类型)不足以申报?第一个词应该足以告诉类型.最好的做法是始终为值赋予后缀吗?

c# declaration literals variable-declaration

24
推荐指数
2
解决办法
1737
查看次数

关于静态常量数据成员的声明和定义的混淆

Scott Meyers 在 Effective Modern C++, Item 30 page 210 中写道,有

无需static const在类中定义完整的数据成员;仅声明就足够了,

那么示例代码是

class Widget {
  public:
    static const std::size_t MinVals = 28; // MinVals' declaration;
    ...
};
...                                        // no defn. for MinVals
std::vector<int> widgetData;
widgetData.reserve(Widget::MinVals);       // use of MinVals
Run Code Online (Sandbox Code Playgroud)

我确信这static const std::size_t MinVals = 28;既是声明是定义,因为它给了一个值MinVals,但评论似乎声称这只是一个声明;第二条评论实际上声称没有定义。代码后面的文字,确实是读

MinVals 缺乏定义。

这证实这static const std::size_t MinVals = 28;不是一个定义,所以我有点困惑。

cppreference对我帮助不大(我的粗斜体):

如果声明static了整型或枚举类型的数据成员(而不是),则可以使用初始化器对其进行初始化,其中每个表达式都是常量表达式,就在类定义中: constvolatile

struct X
{
   const static int …
Run Code Online (Sandbox Code Playgroud)

c++ static variable-declaration language-lawyer

24
推荐指数
1
解决办法
1218
查看次数

将javascript变量声明为特定类型

标题说明了一切,但我会提供更多说明:

看到许多javascript示例,其中所有变量都被声明为类型var,并且看到对其他数据类型的支持,为什么不声明这样的特定数据类型的变量?意思是,为什么不是这样的:

string hello = 'Hello, World'

用来代替

var hello = 'Hello, World'

查看像OReilly Javascript这样的网站显示其他类型的保留字.再次,为什么不使用它们?难道不会这样做:typeof(variable)==='string';不再需要吗?

javascript variables variable-declaration

23
推荐指数
1
解决办法
4万
查看次数

为什么这个C代码编译?

#include <stdio.h>
int main() {
    int c = c;
    printf("c is %i\n", c);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我正在定义一个名为的整数变量c,我将其值赋给自己.但这怎么可以编译呢?c尚未初始化,那么如何将其价值分配给自己呢?当我运行程序时,我明白了c is 0.

我假设编译器正在生成为c变量分配空间的汇编代码(当编译器遇到int c语句时).然后它接受未初始化空间中的任何垃圾值并将其分配回去c.这是发生了什么?

c variable-declaration

21
推荐指数
3
解决办法
842
查看次数