相关疑难解决方法(0)

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++输出负数?

数学:

如果你有这样的等式:

x = 3 mod 7
Run Code Online (Sandbox Code Playgroud)

x可以是...... -4,3,10,17 ......,或更一般地:

x = 3 + k * 7
Run Code Online (Sandbox Code Playgroud)

其中k可以是任何整数.我不知道为数学定义了模运算,但因子环肯定是.

Python:

在Python中,当您使用%正数时,您将始终获得非负值m:

#!/usr/bin/python
# -*- coding: utf-8 -*-

m = 7

for i in xrange(-8, 10 + 1):
    print(i % 7)
Run Code Online (Sandbox Code Playgroud)

结果是:

6    0    1    2    3    4    5    6    0    1    2    3    4    5    6    0    1    2    3
Run Code Online (Sandbox Code Playgroud)

C++:

#include <iostream>

using namespace std;

int main(){
    int m = 7;

    for(int i=-8; i …
Run Code Online (Sandbox Code Playgroud)

c++ standards modulo

52
推荐指数
3
解决办法
2万
查看次数

为什么C++标准指定有符号整数在具有混合签名的二进制操作中被转换为无符号?

C和C++标准规定,在相同等级的有符号和无符号整数之间的二进制运算中,有符号整数被转换为无符号整数.由此引起的SO有很多问题......让我们称它为奇怪的行为:无符号转换为签名转换,C++隐式转换(有符号+无符号),警告 - 有符号和无符号整数表达式之间的比较,%(mod)与混合符号

但是这些都没有给出任何理由,为什么标准是这样的,而不是倾向于签署的注册.我确实找到了一位自封的大师,他说这是明显正确的做法,但他也没有给出推理:http://embeddedgurus.com/stack-overflow/2009/08/a-tutorial-on- signed-and-unsigned-integers /.

查看我自己的代码,无论我将有符号和无符号整数组合在一起,我总是需要从unsigned转换为signed.有些地方没关系,但我没有找到一个代码示例,将有符号整数转换为unsigned是有意义的.

什么情况下铸造到无符号的正确的事情呢?为什么标准是这样的?

c c++ casting

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

标签 统计

c++ ×3

casting ×2

c ×1

implicit ×1

modulo ×1

standards ×1