相关疑难解决方法(0)

在多个字符上使用C++时,单引号有什么作用?

我对这段代码感到好奇:

cout << 'test'; // Note the single quotes.
Run Code Online (Sandbox Code Playgroud)

给我一个输出1952805748.

我的问题:输出是内存中的地址还是什么?

c++ quotes

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

多字符恒定警告

为什么这是一个警告?我认为在很多情况下使用multi-char int常量而不是"无意义"数字或者使用相同值定义const变量更为明确.解析wave/tiff /其他文件类型时,可以更清楚地将读取值与某些"EVAW","数据"等进行比较,而不是相应的值.

示例代码:

int waveHeader = 'EVAW';
Run Code Online (Sandbox Code Playgroud)

为什么这会发出警告?

c c++ portability casting compiler-warnings

35
推荐指数
5
解决办法
8万
查看次数

在C&C++中返回sizeof()运算符的值

#include<stdio.h>
int main()
{
    printf("%d", sizeof('a'));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么在C和C++中编译时上面的代码会产生不同的结果?在C中,它打印4,而在C++中,它是更可接受的答案,即1.
当我用size函数中声明的char变量替换sizeof()内的'a'时,结果在两种情况下都是1!

c c++ compiler-construction

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

int x ='fooo'是编译器扩展吗?

我已经看到并使用了如下的C++代码:

int myFourcc = 'ABCD';
Run Code Online (Sandbox Code Playgroud)

它适用于最近的GCC版本,不知道最近的版本.这个功能是否在标准中?这叫什么?

我在网上搜索时遇到了麻烦......

编辑:

对于未来的观察者,我也发现了这些信息:

来自gcc文档

编译器一次为一个字符定义一个多字符字符常量,将前一个值左移每个目标字符的位数,然后在截断到目标宽度的新字符的位模式中输入字符.最终的位模式为int类型,因此无论单个字符是否有符号都是有符号的(与版本3.1及更早版本的GCC略有不同).如果常量中的字符数多于目标int中的字符数,则编译器会发出警告,并忽略多余的前导字符.

例如,具有8位字符的目标的'ab'将被解释为(int) ((unsigned char) 'a' * 256 + (unsigned char) 'b')', and '\234a' as(int)((unsigned char)'\ 234'*256 +(unsigned char)'a')'.

c c++ gcc

4
推荐指数
3
解决办法
1017
查看次数

C++ switch语句,使用命令行参数

我试图使用switch语句来启动函数调用.需要在来自命令行参数的参数中传递给switch语句的值,这意味着它存储在argv []中.在我的例子中,已知这个参数存储在argv [5]中.我的问题是我不知道如何正确转换或存储argv [5]中找到的值,以便可以通过switch语句读取它.我尝试使用char*,char []和string作为变量'verbosity'的数据类型

我一直得到的错误是这样的:语句需要表达整数类型('char*'无效)开关(verbosity)^ ~~~~~~~~~

我的代码如下:

char* verbosity = argv[5];
cout << endl << verbosity;

switch(verbosity)
{
case 'vlow':
{
   vlow();//calls vlow function
   break;
}
case 'vmed':
{
   vmed();//calls vmed function
   break;
}
case 'vhigh':
{
   vhigh();//calls vhigh function
   break;
}
default:
   break;
}
Run Code Online (Sandbox Code Playgroud)

我应该使用某种格式将字符串从argv []传递到我的switch语句中吗?

c++ switch-statement command-line-arguments

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

为什么要putchar('\\\'); 不行

我想得到输出\\,所以我输入到我的代码, putchar('\\\'); 但它没有用,我得到以下错误

D:\ c ++ work\change\change.cpp(17):错误C2001:常量中的换行符
D:\ c ++ work\change\change.cpp(17):致命错误C1057:宏扩展中意外的文件结束

为什么?

c++

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

c ++错误c2015:常量中的字符太多

对不起,如果它很简单,但我是C++的新手并没有真正掌握它.我需要构建一个计算器,其唯一的命名变量是指针,这是我到目前为止,但我不断得到错误,我无法弄清楚为什么.但是,每个错误总是与我的if构造有关.

int main()
{
    //Creating variables

    //Values to perform operations on
    float *aptr = new(nothrow)float;
    float *bptr = new(nothrow)float;
    float *ansptr = new(nothrow)float;
    int *endptr = new(nothrow)int;
    char *operationptr = new(nothrow)char;

    cout << "Simple Operation Calculator" << endl; //Displays program name
    cout  << "Performs +, -, *, or / on any two real operands." << endl; //Describes nature of program to user

    *endptr = 1;
    while(*endptr = 1) //Creates a loop so that the user may perform as many operations …
Run Code Online (Sandbox Code Playgroud)

c++

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