关于在C++中使用整数,我有一个奇怪的问题.
我写了一个简单的程序,它将一个值设置为一个变量然后打印它,但它没有按预期工作.
我的程序只有两行代码:
uint8_t aa = 5;
cout << "value is " << aa << endl;
Run Code Online (Sandbox Code Playgroud)
这个程序的输出是 value is
即,它打印为空白aa.
当我改变uint8_t到uint16_t上面的代码就像一个魅力.
我使用64位的Ubuntu 12.04(精确穿山甲),我的编译器版本是:
gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)
Run Code Online (Sandbox Code Playgroud) 有什么区别
(type)value
Run Code Online (Sandbox Code Playgroud)
和
type(value)
Run Code Online (Sandbox Code Playgroud)
在C++中?
与Regular cast vs. static_cast vs. dynamic_cast相关的问题:
你更喜欢C++中的演员语法风格?
(int)foostatic_cast<int>(foo)int(foo)它们可能无法转换为完全相同的指令(是吗?)但它们的效果应该相同(对吗?).
如果你只是在内置数值类型之间进行转换,我发现C++风格的转换语法太冗长了.作为以前的Java编码器,我倾向于使用C风格的转换语法,但我的本地C++专家坚持使用构造函数语法.
你怎么看?
我将在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++的作业.我有一个函数,我要向学生出口,我希望他们在他们的课程中的不同点上打电话,这样在评分期间,我们可以拦截这些电话,以确保他们在正确的时间做正确的事情.我不希望该代码在提供的启动文件中执行任何操作,因此我只给了函数一个只有一系列语句的主体,这些语句会转换所有参数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 ++代码中的函数,但我不知道它们做了什么或它们是什么,它们似乎做类似于类型转换的东西,但它们看起来不像是类型转换,所以它们是什么?
他们看起来像这样:int(x)在哪里x有一些数字输入,我一直在网上看,但我一直无法找到任何关于他们的信息(可能是因为我不知道他们叫什么).
有帮助吗?
我正在使用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变量.
它看起来不错,但我想我错过了一些东西.
(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)