首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Leetcode Q9回文编号相同代码在Java中工作,但在C++中不工作

Leetcode Q9回文编号相同代码在Java中工作,但在C++中不工作
EN

Stack Overflow用户
提问于 2022-05-14 13:16:36
回答 1查看 129关注 0票数 -2

我试着解决了这个问题:https://leetcode.com/problems/palindrome-number/使用代码:

代码语言:javascript
复制
class Solution {
public:
    bool isPalindrome(int x) {
        int rev = 0;
        int temp = x;
        while(temp != 0 && temp > 0){
            rev = rev* 10;
            rev = rev + temp%10;
            temp = temp/10;
        }
        if (rev == x){
            return true;
        }
        else{
            return false;
        }
    }
};

并在C++中得到了以下错误:

代码语言:javascript
复制
Line 7: Char 22: runtime error: signed integer overflow: 998765432 * 10 cannot be represented in type 'int' (solution.cpp)
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior prog_joined.cpp:16:22

但是,逻辑上相同的代码在Java中运行得很完美。java和c++的int数据类型都在- 2^31到2^31-1之间(来源:https://www.tutorialspoint.com/cplusplus/cpp_data_types.htmhttps://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html#:~:text=int%3A%20By%20default%2C%20the%20int,value%20of%20232%2D1.),那么为什么会出现这个错误,我如何修复呢?谢谢

EN

回答 1

Stack Overflow用户

发布于 2022-05-14 14:36:16

您将得到此错误,因为9,987,654,320太大,无法容纳32位整数。

解决方案:改用long long。这就是:

代码语言:javascript
复制
long long rev = 0;
long long temp = x;

此外,我建议明确指定参数x的类型。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72240575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档