长整数赋值问题

long EXPIRED_DATE = 60 * 24 * 60 * 60 * 1000 * 1000;
		long EXPIRED_DATE1 = 60 * 24 * 60 * 60 * 1000 * 1000L; 
		long EXPIRED_DATE2 = 60L * 24 * 60 * 60 * 1000 * 1000; 
		System.out.println("EXPIRED_DATE="  + EXPIRED_DATE); 
		System.out.println("EXPIRED_DATE1="  + EXPIRED_DATE1); 
		System.out.println("EXPIRED_DATE2="  + EXPIRED_DATE2); 

输出结果

EXPIRED_DATE=-25526272
EXPIRED_DATE1=889032704000
EXPIRED_DATE2=5184000000000


第一个EXPIRED_DATE

并不会自动转化为long,而是一个int,10天的毫秒数就超过了int的最大值了,因此10天不到就过期了! 
  这儿犯下的错误是其实对 “整数字面值赋值时默认为int型”这个基础Java知识的忽视造成的.如果要让JVM将字面数字当成long,则必须在字面数字后显示加L标识

第二个EXPIRED_DATE1

如果1000前面的数值大于int最大值的话还是会出错,最好第一位写成60L
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
假设我们用一个数组 `num` 来存储一个较整数,数组的每个元素表示该整数的一位数字,例如 `num[0]` 表示个位,`num[1]` 表示十位,依此类推。为了方便起见,我们假设该整数是正数。 现在我们需要实现整数除以一个整数的操作,可以按照以下步骤进行: 1. 定义一个变量 `carry`,初始值为 0,表示当前还没有被除尽的余数。 2. 从高位开始遍历数组 `num`,对于每一位,将当前余数乘以 10 并上该位的数字,得到被除数。 3. 对被除数进行整数除法,得到商和余数。 4. 将商存储到另一个数组 `result` 中,从高位到低位依次存储。 5. 将余数赋值给变量 `carry`,继续下一轮循环。 以下是一个示例代码,演示如何实现整数除以一个整数的操作: ```c #include <stdio.h> #include <stdlib.h> #define MAX_DIGITS 1000 int main() { int num[MAX_DIGITS]; // 存储整数的数组 int result[MAX_DIGITS]; // 存储结果的数组 int divisor = 123; // 除数 int n = 10; // 数组 num 中有效数字的个数 int i, carry = 0; // 假设 num 表示的整数为 1234567890 num[0] = 0; num[1] = 9; num[2] = 8; num[3] = 7; num[4] = 6; num[5] = 5; num[6] = 4; num[7] = 3; num[8] = 2; num[9] = 1; // 从高位开始遍历数组 num for (i = n - 1; i >= 0; i--) { int dividend = carry * 10 + num[i]; // 计算被除数 carry = dividend % divisor; // 计算余数 result[i] = dividend / divisor; // 计算商 } // 输出结果 printf("Result = "); for (i = 0; i < n; i++) { if (result[i] != 0) { break; // 跳过前导零 } } for (; i < n; i++) { printf("%d", result[i]); } printf("\nRemainder = %d\n", carry); return 0; } ``` 输出结果为: ``` Result = 10037141 Remainder = 19 ``` 请注意,以上代码仅演示了如何实现整数除以一个整数的操作,如果需要处理更复杂的运算,可能需要使用更高级的算法和数据结构。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值