相关疑难解决方法(0)

我在哪里可以找到当前的C或C++标准文档?

对于许多问题,答案似乎可以在"标准"中找到.但是,我们在哪里找到它?最好是在线.

谷歌搜索有时会觉得徒劳,尤其是对于C标准,因为他们在编程论坛的大量讨论中被淹没.

要开始这个,因为这些是我现在正在搜索的,那里有很好的在线资源:

  • C89
  • C99
  • C11
  • C++ 98
  • C++ 03
  • C++ 11
  • C++ 14

c c++ standards c++-faq

394
推荐指数
8
解决办法
12万
查看次数

C++运算符中的隐式类型转换规则

我想知道什么时候应该投出更好.在添加,乘法等时,C++中的隐式类型转换规则是什么.例如,

int + float = ?
int * float = ?
float * int = ?
int / float = ?
float / int = ?
int / int = ?
int ^ float = ?
Run Code Online (Sandbox Code Playgroud)

等等...

表达式是否总是被评估为更精确的类型?Java的规则有所不同吗?如果我不准确地说出这个问题,请纠正我.

c++ casting implicit

156
推荐指数
5
解决办法
9万
查看次数

c ++与双精度和整数的隐式转换混淆

我一直在研究c ++,我遇到了一个我不理解的隐式转换问题.在这段代码中:

#include <iostream>
using namespace std;
int main(){
    int i;
    i = 1 / 2 * 2 / 1. * 2. / 4 * 4;
    cout << i << endl;

    i = 3.5 + 2 + 1.6;
    cout << i << endl;

    i = 2 + 3.5 + 1.6;
    cout << i << endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

它的输出分别为:0,7和7.

在最后两个示例中,编译器隐式地将元素转换为双精度数,因此sum = 7.1,然后将其转换为int以获得7.

因为第一个例子也有双打,我希望所有这些元素也被转换为双精度,并且总和为2.0,然后被强制转换为2,但结果为0,所以看起来似乎是"1/2" "被视为整数,给出结果为0.我不确定这是编译器正在做什么,但这就是它的样子.

我认为如果任何元素是double,编译器会隐式地将所有元素转换为double.但是在第一种情况下不会发生这种情况.有人可以解释为什么编译器会以不同方式转换它们 谢谢.

c++

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

float 除以 int 总是得到 float 吗?C++

我在 C 和 C++ 上编程已经有一段时间了,并且总是确信双除 int 会得到 double,或者双除 int 也会得到 double(只有 int 除以 int 才会得到 int),并且与加法相同。我正在做我的作业,并确信1 + (f*f + 10) / k, where fisdoublekisint总是返回双倍。我在mac上使用g++ -std=gnu++11命令(所以它可能是clang编译器)并且我通过了测试(结果我确实得到了浮点数),但我的老师说它不确定它是否是浮点数(他使用的是windows)。该行为平台特定吗?是否有任何 C++ 标准描述 int 除法上的 double ?谢谢你!我的代码:

#include <iostream>
using namespace std;

int main() {
    int  N;
    double f, P = 0;
    cin >> N >> f;
    for (double k = 1; k <= N; k++){
      P += 1 + (f*f + 10) / k; …
Run Code Online (Sandbox Code Playgroud)

c++ standards visual-c++ c++11

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

标签 统计

c++ ×4

standards ×2

c ×1

c++-faq ×1

c++11 ×1

casting ×1

implicit ×1

visual-c++ ×1