`
ah_fu
  • 浏览: 227933 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

Pro*C的整数溢出测试

阅读更多

测试发现,Pro*C中,不管ORACLE数据库中的number字段是多大,只要字段的值大于绑定的变量所能够容纳的范围,就会出现“ORA-01455: 转换列溢出整数数据类型”。

不过,Pro*C不支持long long(64位)类型的绑定。当number字段的值大于2147483647或小于- 2147483648时,建议使用double类型来绑定,然后再将double类型转换成long long类型。

double temp;
long long value;
//…

EXEC SQL SELECT large_value INTO :temp FROM some_table; //….

value = (long long)temp;
 
还有另一种做法,不过效率没有上一种高:
#include <stdlib>
 
//….
char buf[22];
long long value;
//….

EXEC SQL SELECT large_value INTO :buf FROM some_table; //…

value = strtoll(buf, NULL, 0);   //无符号类型使用strtoull
// 注意:windows平台的函数名为_strtoi64()和_strtoiu64()
 
对应的值的范围为:
数据类型
长度(位)
数值范围
char
8
-128 至127
unsigned char
8
0至255
short
16
-32768至32767
unsigned short
16
0至65535
int
32
- 2147483648至2147483647
unsigned int
32
0 - 4294967295
long long
64
- 9223372036854775808
至9223372036854775807
unsigned long long
64
0至18446744073709551615
   供参考。
分享到:
评论

相关推荐

    S7-200 整数数学运算指令

    如果运算结果超过16位整数的范围,溢出标志将被置位,且不会写入输出。此外,如果发生除以零的情况,除法无效标志将被置位,其他算术状态位保持不变。操作数类型与前面所述相同。 #### 双整数乘法与除法 双整数的...

    Matlab溢出问题的研究代码

    例如,当一个整型变量试图存储一个超出其最大值的结果时,就会发生整数溢出;对于浮点数,超过其最大或最小值也可能引发溢出。 2. **Matlab中的溢出问题**: 在Matlab中,溢出主要出现在两个方面:一是整数运算,...

    c语言整数字符串加减法和大小判断,导出lua接口

    对于溢出检查,C语言默认不做任何处理,因此在处理大整数时需要额外的逻辑来确保结果在整数范围之内。 3. **整数比较**:使用`, `&gt;`, `, `&gt;=`, `==`, `!=`这些比较运算符,我们可以轻松地对两个整数进行大小判断。...

    C++整数溢出的例子

    一个程序例子 适用于刚开始学习C++学习的同学

    单片机C语言程序整数分离

    本文将深入探讨“单片机C语言程序整数分离”这一主题,帮助你理解如何在单片机环境中对整数进行位操作,以实现数据的分离和处理。 整数分离通常涉及对整数的各个位进行单独操作,这在单片机应用中尤其常见,因为...

    C语言 求大整数阶乘 源代码

    在编程领域,尤其是在C语言中,处理大整数阶乘是一项有趣的挑战,因为C语言标准库并不直接支持大整数运算。本主题的核心是编写一个程序,能够在超出普通整型范围的情况下计算阶乘。以下是对这个主题的详细讨论: 1....

    软件漏洞与缓冲区溢出奚PPT优秀资料.ppt

    2. **示例**:例如,一个简单的C语言程序,通过`gets()`函数读取用户输入,但没有限制输入长度,这可能导致缓冲区溢出: ```c int main() { char name[8]; printf("Your name: "); gets(name); printf("Hello,...

    (2.3)--C语言中的整数1

    总之,理解C语言中的整数类型、它们的表示方法以及在计算和比较中的行为是至关重要的,特别是在处理大整数、溢出和类型转换时。程序员需要清楚地知道他们正在使用的数据类型,以避免潜在的错误和不期望的行为。

    整数溢出1

    整数溢出是一种常见的编程错误,特别是在处理数值计算时,可能会导致不可预见的程序行为。在计算机科学中,整数的表示是有固定宽度的,这通常由编程语言或硬件架构决定。例如,32位整数可以表示从 -2^31 到 2^31-1 ...

    基于整型变量一致化的整数溢出检测 (2008年)

    ### 基于整型变量一致化的整数溢出检测 #### 一、研究背景及意义 随着信息技术的发展,软件安全问题日益突出。其中,软件缺陷成为信息安全的主要隐患之一。整数溢出作为一类常见的软件缺陷,其可能导致程序逻辑...

    大整数乘法C语言版本

    压缩包中的"大整数.C"文件很可能是实现上述算法的源代码,包含具体的C语言实现细节,如变量定义、函数声明、递归调用等。通过阅读和理解这段代码,可以深入学习大整数乘法的原理和C语言的编程技巧。

    完整C语言整数规划分支定界源程序

    甲到乙共五十个城市,求出两者之间最短距离和最低花费,用分支定界发

    Google Chrome Skia整数溢出漏洞

    Google Chrome Skia整数溢出漏洞

    C语言实现的大整数基本运算库

    - **溢出处理**:在C语言中,没有内置的溢出检查机制,所以开发者需要在实现运算函数时自行处理溢出情况。 - **效率优化**:为了提高性能,可以使用位操作、缓存技术、并行计算等方法。 - **错误处理**:良好的...

    堆溢出测试报告1

    这个测试案例中,检测结果显示为失败,原因是由于整数溢出导致的堆溢出。微执行(Micro-execution)设置中,malloc函数的参数被设定为符号值,系统默认解析得到的是一个非常大的数值,因此并未触发溢出。 1.2 SARD-...

    C语言实现大整数乘法

    在编程领域,大整数乘法是一个常见的计算问题,特别是...实际的编程实践中,建议学习开源的大整数库,如GMP(GNU Multiple Precision Arithmetic Library),这些库已经经过了充分的测试和优化,能更好地满足各种需求。

    整数数学运算指令借鉴.pdf

    本文将详细讲解SIMATIC系统中的整数数学运算指令,这些指令包括整数加法、整数减法、双整数加法与减法、整数乘法与整数除法,以及相关的错误条件和数据类型。 1. **整数加法和整数减法**: 整数加法与减法指令用于...

    C语言--大整数减法

    C语言大整数减法 C语言中大整数减法是指对两个大整数进行减法运算,以获取它们之间的差值。由于C语言中整数类型的限制,无法直接对大整数进行减法运算,因此需要使用数组来实现大整数的减法。 在给定的代码中,...

    C语言陷进与缺陷--笔录

    - **整数溢出**:当运算结果超出整型变量所能表示的最大范围时,会导致溢出问题,从而引发不可预测的行为。 #### 2. **C语言的缺陷** - **缺乏类型安全**:C语言不提供严格的类型检查机制,这可能导致编译器无法...

Global site tag (gtag.js) - Google Analytics