相关疑难解决方法(0)

求平方和时,是否需要显式处理负数或零?

我最近在课堂上做了一个测试。问题之一是:

给定一个数字n,用C / C ++编写一个函数,该函数返回数字平方的数字总和。(以下内容很重要)。的范围Ñ为[ - (10 ^ 7),10 ^ 7]。示例:如果n = 123,则您的函数应返回14(1 ^ 2 + 2 ^ 2 + 3 ^ 2 = 14)。

这是我写的函数:

int sum_of_digits_squared(int n) 
{
    int s = 0, c;

    while (n) {
        c = n % 10;
        s += (c * c);
        n /= 10;
    }

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

看着我正确。所以现在测试又回来了,我发现老师由于我不明白的原因没有给我所有的分数。据他说,为了使我的功能更完整,我应该添加以下细节:

int sum_of_digits_squared(int n) 
 {
    int s = 0, c;

    if (n == 0) {      // …
Run Code Online (Sandbox Code Playgroud)

c

213
推荐指数
6
解决办法
2万
查看次数

为什么-INT_MIN = INT_MIN在带符号的二进制补码表示中?

我还没有找到最低签名负数没有等效签名正数的原因?我的意思是在3位二进制数字中为简单起见100是-4?但我们不能在签名格式中得到积极的4,因为我们不能.它溢出来了.那么我们怎么知道两个补码1000是-4 1000 0000是-128等等?我们没有原始正数

c c++ binary signed twos-complement

6
推荐指数
2
解决办法
5173
查看次数

(x<y)==(-x>-y) 是真还是假?

该问题来自 cs:app3e 2.82。我了解到,当x = INT_MIN,-x也是-INT_MIN,但是

#include <stdio.h>
#include <limits.h>

int main() {
    int x = INT_MIN, y = -3;
    printf("%d\n", (x < y) == (-x > -y));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在我的机器上(Linux版本6.2.0-34-generic(buildd@bos03-amd64-059)(x86_64-linux-gnu-gcc-11(Ubuntu 11.4.0-1ubuntu1~22.04)11.4.0,GNU ld(GNU Binutils for Ubuntu) 2.38)),这给出输出 1。为什么会发生这种情况?

我使用gcc -o来编译它。我还使用gcc -O0来编译它。

c gcc system

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

标签 统计

c ×3

binary ×1

c++ ×1

gcc ×1

signed ×1

system ×1

twos-complement ×1