相关疑难解决方法(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万
查看次数

类型转换 - unsigned to signed int/char

我试过执行以下程序:

#include <stdio.h>

int main() {
    signed char a = -5;
    unsigned char b = -5;
    int c = -5;
    unsigned int d = -5;

    if (a == b)
        printf("\r\n char is SAME!!!");
    else
        printf("\r\n char is DIFF!!!");

    if (c == d)
        printf("\r\n int is SAME!!!");
    else
        printf("\r\n int is DIFF!!!");

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

对于这个程序,我得到输出:

char是DIFF !!! int是相同的!

为什么我们两者都有不同的输出?
输出应该如下?

char是相同的!int是相同的!

一个键盘连接.

c types type-conversion integer-promotion signedness

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