相关疑难解决方法(0)

有没有理由在C++ 03中使用'auto'关键字?

请注意,此问题最初发布于2009年,在C++ 11批准之前以及auto关键字的含义发生重大变化之前.提供的答案仅适用于C++ 03的含义auto- 即指定的存储类 - 而不是C++ 11的含义auto- 即自动类型推导.如果您正在寻找有关何时使用C++ 11的建议auto,则此问题与该问题无关.

在最长的时间里,我认为没有理由static在C中使用关键字,因为在块范围之外声明的变量是隐式全局的.然后我发现static在块范围内声明一个变量会给它一个永久的持续时间,并且在块范围之外(在程序范围内)声明它会给它文件范围(只能在该编译单元中访问).

所以这给我留下了一个我可能还没有完全理解的auto关键字:关键字.除了"局部变量"之外还有其他一些含义吗?无论你想在哪里使用它,它都没有隐含地为你做的事情?auto变量如何在程序范围内表现?static auto文件范围中的变量是什么?此关键字除完全性之外是否还有其他目的?

c++ keyword c++03

84
推荐指数
4
解决办法
7万
查看次数

为什么创建了register关键字?

在阅读Herb Sutter撰写的关键词(或其他名称)时,我遇到了以下几点:

没错,有些关键字在语义上等同于空格,这是一个美化的评论.

我们已经看到为什么C++语言将关键字视为保留字,我们已经看到两个关键字-auto和register--它们对C++程序没有任何语义差异.不要使用它们; 无论如何,它们只是空格,并且有更快的方式来输入空格.

如果关键字auto(可能不是在C++ 11中)并且register没有价值,那么它们为什么被创建和使用?

如果包含register变量之前没有任何区别

#include<stdio.h>
int main(){
    register int a = 15;
    printf("%d\n%d\n",&a,a);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么上述程序会出错?

test_register.c:在函数'main'中:

test_register.c:4:2:错误:请求的寄存器变量'a'的地址

的printf( "%d \n%d \n",&A,A);

以下程序适用于C++.

#include<iostream>
int main(){
    register int a = 15;
    std::cout<<&a<<'\n'<<a;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c c++ language-lawyer c++11

44
推荐指数
3
解决办法
7265
查看次数

c中"auto"关键字的概念

能否请你在C程序中给出关键字"auto"的确切概念.

当我读完一本书"Deep C secrets"时,得到了以下引用.

auto关键字显然毫无用处.它只对在符号表中创建条目的编译器 - 写入器有意义 - 它表示此存储在进入块时自动分配(与全局静态分配或堆上的动态分配相反).Auto与其他程序员无关,因为默认情况下你会得到它.

c keyword

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

局部变量auto int a和int a有什么区别?

存储类标识符auto的用例?我知道默认情况下所有局部变量都是auto.但是,通过明确写入auto int a会有什么不同?

c

12
推荐指数
1
解决办法
7207
查看次数

C中的_Thread_local存储类说明符?

我在C How to Program 7th一书中读到了一个关于一些新的标准 C 存储类的注释_Thread_local

新的 C 标准增加了存储类说明符_Thread_local,这超出了本书的范围。

我在谷歌和这里寻找它,但没有出现。有人可以给我一些关于它的链接吗?

c thread-local-storage storage-class-specifier c11

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

在sizeof()中取消引用指针类型

我有以下结构:

typedef struct _foo_t {
    int bar;
    float buzz;
    char quux[40];
} *const foo_t;
Run Code Online (Sandbox Code Playgroud)

有没有办法获得结构的大小,就像通过它完成sizeof(struct _foo_t),但只使用名称foo_t?我试过了sizeof(*foo_t),但那不编译.

c syntax types pointers dereference

2
推荐指数
1
解决办法
4204
查看次数

struct的unsigned int字段是否自动初始化?

C是否保证结构中的无符号整数字段被初始化为零?在我的系统中,似乎它(或者我非常"幸运"(实际上是不幸的)).

在代码中,在以下场景中会发生什么?

struct node {
  unsigned int rec_size;
};

struct node node;
// what is the value of node.rec_size? Undefined or 0?
Run Code Online (Sandbox Code Playgroud)

相关的答案,但不一样,因为在我的例子中,只有一个字段,没有初始化.

c struct

1
推荐指数
2
解决办法
87
查看次数

在C++中,auto和C一样完全不同吗?

阅读本文后:在C++中使用auto声明变量是否存在缺点? 我问自己:真的没有一个回答者知道auto不是一个类型而是存储类说明符.

或者,auto因为C++ 11与普通C中的存储类说明符不同?

如果是这样,这会破坏C和C++之间的兼容性吗?

(我知道他们的官方从来没有相互支持过,但我的经验是C ​​++委员会试图尽可能接近C,但是现在可以改变现有的关键字而不是过时的.只是添加一个新的.为什么在这里做这样的突破consistens?)

c c++ auto

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

是否可以在C中同时执行两个语句?

通常在C中,我们将语句作为列表,当程序运行时,它逐个执行语句.是否可以同时执行两个语句?

例如,假设我希望交换两个变量ab.通常我们会声明第三个变量c.

c=b;
b=a;
a=b;
Run Code Online (Sandbox Code Playgroud)

但是如果我们能够同时执行两个语句,那么我们就不需要第三个变量c.我们可以做a=b;,并b=a;同时代替.

那么,有没有办法同时执行两个或多个语句?

c swap

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