相关疑难解决方法(0)

uint8_t无法用cout打印

关于在C++中使用整数,我有一个奇怪的问题.

我写了一个简单的程序,它将一个值设置为一个变量然后打印它,但它没有按预期工作.

我的程序只有两行代码:

uint8_t aa = 5;

cout << "value is " << aa << endl;
Run Code Online (Sandbox Code Playgroud)

这个程序的输出是 value is

即,它打印为空白aa.

当我改变uint8_tuint16_t上面的代码就像一个魅力.

我使用64位的Ubuntu 12.04(精确穿山甲),我的编译器版本是:

gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)
Run Code Online (Sandbox Code Playgroud)

c++

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


C++演员语法样式

Regular cast vs. static_cast vs. dynamic_cast相关的问题:

你更喜欢C++中的演员语法风格?

  • C风格的演员语法: (int)foo
  • C++ - 样式转换语法: static_cast<int>(foo)
  • 构造函数语法: int(foo)

它们可能无法转换为完全相同的指令(是吗?)但它们的效果应该相同(对吗?).

如果你只是在内置数值类型之间进行转换,我发现C++风格的转换语法太冗长了.作为以前的Java编码器,我倾向于使用C风格的转换语法,但我的本地C++专家坚持使用构造函数语法.

你怎么看?

c++ casting coding-style

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

type(myVar)和(type)myVar有什么区别?

我将在cplusplus.com上完成完整的教程,手动编写和编译每个示例.我经常偶然发现让我感到困惑的事情.

我目前正在学习这一部分:http://www.cplusplus.com/doc/tutorial/structures/.只有阅读教程才能轻易忽略一些细微之处.手动输入所有东西的优点是这些细节确实很突出.

在上面的页面中,有两个示例程序.一个有这条线:

stringstream(mystr) >> yours.year;
Run Code Online (Sandbox Code Playgroud)

另一个有这条线:

(stringstream) mystr >> pmovie->year;
Run Code Online (Sandbox Code Playgroud)

我不明白的是type (myVar) = x;和之间的区别(如果有的话)(type) myVar = x;.

我没有按顺序执行整个教程.我查了但是没有找到这个地址,但我可能错过了它.

  • 有区别吗?
  • 是否有一种首选方式而不是另一种方式?

c++

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

不寻常的编译器错误转换为void?

我正在为我正在教授的课程安排一个基于C++的作业.我有一个函数,我要向学生出口,我希望他们在他们的课程中的不同点上打电话,这样在评分期间,我们可以拦截这些电话,以确保他们在正确的时间做正确的事情.我不希望该代码在提供的启动文件中执行任何操作,因此我只给了函数一个只有一系列语句的主体,这些语句会转换所有参数void以禁止编译器有关未使用参数的警告.在这样做的过程中,我遇到了一个我以前从未见过的不寻常的编译器错误,并且对此站点的搜索没有发现任何有用的信息.

这个简化的测试用例可以最好地说明错误:

void iDontUseMyArguments(int a, int b) {
    (void) a;    // Explicit cast to void - totally fine!
    (void) b;
}

void iDontEither(int a, int b) {
    (void) a, b;  // Comma expression casted to void, though technically
                  // b isn't casted to void!
}

void norDoI(int a, int b) {
    void(a, b);   // ERROR! No idea why this isn't okay.
}

void meNeither(int a, int b) {
    (void)(a, b); // Comma expression casted to void - …
Run Code Online (Sandbox Code Playgroud)

c++ casting void comma-operator most-vexing-parse

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

int(x)做什么?

我已经看过这些,看起来似乎是c ++代码中的函数,但我不知道它们做了什么或它们是什么,它们似乎做类似于类型转换的东西,但它们看起来不像是类型转换,所以它们是什么?

他们看起来像这样:int(x)在哪里x有一些数字输入,我一直在网上看,但我一直无法找到任何关于他们的信息(可能是因为我不知道他们叫什么).

有帮助吗?

c++

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

转换为unsigned char

我正在使用MPLab C18 C编译器并使用此代码获取语法错误:

hundreds = unsigned char((tick / 100));
tens = unsigned char((tick - (hundreds * 100)) / 10);
ones = unsigned char((tick - (hundreds * 100) - (tens * 10)));
Run Code Online (Sandbox Code Playgroud)

tick是一个unsigned int.我正在尝试的是通过简单的划分将三位数值转换为三个单独的ASCII值,并将整数转换为我的unsigned char变量.

它看起来不错,但我想我错过了一些东西.

c types casting

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

int(b) 和 (int)b 有什么区别?

(int)b和 和有什么区别int(b)

int(b)和的值是否可能会有所不同(int)b?如果不是,那么两者有什么区别?

有人可以澄清一下吗?

我的代码:

cout << "The expression is " << a + b << endl;
cout << "The expression is " << a + int(b) << endl;
cout << "The expression is " << a + (int)b << endl;
Run Code Online (Sandbox Code Playgroud)

c++

-4
推荐指数
1
解决办法
193
查看次数