精华内容
下载资源
问答
  • C语言中学习中,初学者很容易在写程序时发生错误,好多同学英语水平有限,不能理解其中含义,下面的网址给出了常见的序错误类型,英文错误提示及中文对照表,大家可以查阅。 ......

    在C语言中学习中,初学者很容易在写程序时发生错误,好多同学英语水平有限,不能理解其中含义,下面的网址给出了常见的序错误类型,英文错误提示及中文对照表,大家可以查阅。

    https://wenku.baidu.com/view/127b0b8f28ea81c759f5785f.html

    展开全文
  • 1.#INF00 原因是:溢出。 可能为循环出错结果过大或分母为0的情况。

    -1.#IND00进行了无意义的运算(调用的函数缺少返回值)
    1.#INF00 溢出(1.分母为零2.for循环错误超过可取该类型的取值范围)
    #2 - Stack around the variable 'xxx' was corrupted 内存溢出(数组下标越界)

    展开全文
  • 问题:[单选] 以下关于C语言数据类型使用的叙述中错误的是( )。 -A . 若要准确无误差地表示自然数,应使用整数类型B . 若要保存带权多位小数的数据,应使用双精度类型C . 若要处理如“人员信息”等含有不同类型的...

    问题:

    [单选] 以下关于C语言数据类型使用的叙述中错误的是(  )。    -

    A . 若要准确无误差地表示自然数,应使用整数类型

    B . 若要保存带权多位小数的数据,应使用双精度类型

    C . 若要处理如“人员信息”等含有不同类型的相关数据,应自定义结构体类型

    D . 若只处理“真”和“假”两种逻辑值,应使用逻辑类型

    有以下程序: #include  #includestruct A{int a;char b[10];double C;); void f(struct A t); main(  ){struct A a={"1001,"ZhangDa",l098,0};  f(a);printf("%d,%S,%6.1f",a.a,a.b,a.c);}void f(struct A t){t.a=1002;strcpy(t.b,"ChangRon9");t.c=1202.0;}程序运行后的输出结果是(  )。 1001,ZhangDa,1098.0   。 1002,ChangRong,1202.0。 1001,ChangRong,1098.0。 1002,ZhangDa,1202.0。

    设有定义: struet complex{int real,unreal;)datal={1,8},data2; 则以下赋值语句中错误的是(  )。 data2=datal;   。 data2={2,6};。 data2.real=datal.real;。 data2.real=datal.unreal; 。

    若有定义"int(*pt)[3];",则下列说法正确的是(  )。 定义了基类型为int的三个指针变量。 定义了基类型为int的具有三个元素的指针数组pt。 定义了一个名为*pt、具有三个元素的整型数组。 定义了一个名为pt的指针变量,它可以指向每行有三个整数元素的二维数组 。

    以下关于C语言的叙述中正确的是(  )。 C语言中的注释不可以夹在变量名或关键字的中间。 C语言中的变量可以在使用之前的任何位置进行定义。 在C语言算术表达式的书写中,运算符两侧的运算数类型必须一致。 C语言的数值常量中夹带空格不影响常量值的正确表示 。

    某二叉树共有7个结点,其中叶子结点只有l个,则该二叉树的深度为(假设根结点在第1层)(  )。 3   。 4   。 6   。 7。

    以下关于C语言数据类型使用的叙述中错误的是(  )。    -

    参考答案:

    查看

    ●  参考解析

    C语言中没有逻辑类型。

    展开全文
  • 现在从机器存储的角度来看这个问题:在C语言中,char表示占用一个byte空间,在机器上一个byte可存储的范围是0000 0000 b ~ 1111 1111 b, 现在不考虑符号问题,仅仅把它解释为无符号的整数,那么对应十进制范围是0.....

    作者:autogeek

    1.先从一个列子引出问题:

    按 Ctrl+C 复制代码

    按 Ctrl+C 复制代码

    输出结果:

    115642306_1_20171108021455696.png

    为什么是0 而不是256, 这是很显然的发生了溢出。现在从机器存储的角度来看这个问题:

    在C语言中,char表示占用一个byte空间,在机器上一个byte可存储的范围是0000 0000 b ~ 1111 1111 b, 现在不考虑符号问题,仅仅把它解释为无符号的整数,那么对应十进制范围是0 ~ 255, 现在我们的a初始值是255 即 1111 1111 b,接着给它加1,那么二进制运算后变为 1 0000 0000 b, 由于进位,结果变成了9个bit,但是别忘了char是只占一个byte的,所以最前面的那个bit 将会被丢弃,结果变成 0000 0000 b, 因此输出结果会是0.

    这个列子说明,整数在机器上存储的方法是满足二进制的运算律的,但是当用一定类型表示出来时,这个二进制的值就要按照那个类型的约束表现出来,就像上面的列子一样,即使最后的二进制结果是9个bit,但是char类型明确约束你只能占8个bit,最后只能丢弃1个bit之后按8个bit的结果展示出来。

    2.第二个列子,引入有符号类型的表示问题:

    按 Ctrl+C 复制代码

    按 Ctrl+C 复制代码

    输出结果:

    115642306_2_20171108021455899.png

    先不忙分析问题原因,先来搞清楚负数是如何在计算机上存储的。简单的说,计算机擅长做0和1的加法,并不愿意像人类用的十进制一样去引入负号这个东西,否则会增加硬件和软件的复杂性和成本,如何解决这个问题,众所周知的就是用补码。可以举个列子去理解补码的作用,1+(?)= 0,很显然 1 + (-1)= 0, 这样就把减法问题转化为加法问题,那么在计算机中怎么去表示(-1)? 同样的,我们站在计算机的角度想问题(先拿一个byte的来举例),(0000 0001 b) + (?) = (0000 0000 b), 当然是(0000 0001 b) + (1111 1111 b) = (0000 0000 b),因此(1111 1111 b) 就是十进制1(原码)的补码,教科书中说补码可以通过对原码取反加一得到,其实通过上面的列子可以换一种角度解读补码的含义:即补码就是那个使得和原码相加之后结果能够为0的数。说了这么多,就是想说明对一个byte来说,(-1)在计算机上存储为(1111 1111 b)。

    那么对于有符号char型来说,还是一个byte的空间,还是0000 0000 b ~ 1111 1111 b的范围,但是现在要把这个范围按有符号整数的表示来翻译了,可以分为3部分来理解,即 < 0,0 ,> 0,0000 0000 b显然是0, 0000 0001 b ~ 0111 1111 b显然是 1 ~ 127, 1000 0000 b ~ 1111 1111 b 是 –1 ~ –128。由此也可以发现,可以把最高位作为符号位来理解,0正1负。

    115642306_3_20171108021455992.png

    换一种表达方式 (图画的太渣了,求推荐好的画图工具)

    115642306_4_20171108021456446.png

    上面这两张图希望能表达清楚我上面的分析结论,即计算机上存储的整数一定是满足二进制的运算律的,但是怎么去解释它就取决于整型变量的类型约束条件了。

    说了这么多,再来解释第二个列子就简单多了。第一步char a = 127 说明a是有符号的,127在计算机上存储为0111 1111b, 第二步 a = a + 1,a在计算机上变成了1000 0000b, 对应上面的分析,把它按照有符号数来解释即 -128,因此输出-128。

    3.上第三个列子,关于符号位扩展问题:

    按 Ctrl+C 复制代码

    按 Ctrl+C 复制代码

    输出结果:

    115642306_5_20171108021456602.png

    我只是将sample_2的代码中%d改成了%u,输出结果就差之千里,其实还是一个道理,用不同的方式解释计算机存储的二进制值就会得到不同的结果。当然这里还涉及符号位扩展以及类型提升。

    首先说类型提升,%d表示打印int类型有符号十进制数,%u表示打印int无符号十进制数,当a被打印时隐式的发生类型提升,即char被提升为int,即8位被扩展为32位。

    对于sample_3来说:

    a的值在1个byte中,是 0111 1111b

    a加1后在1个byte中,是 1000 0000b

    a的值被类型提升并扩展为4个byte后,是11111111 11111111 11111111 10000000 b,按照%u来解释是多少呢,当然是4294967168。

    可是为什么扩展后前面的空位都是补1而不是补0呢,这个有个原则是 “有符号数扩展符号位,也就是向前补1,无符号数扩展0”。

    那么sample_2应该也发生类型提升和符号扩展,为什么没出问题呢。因为虽然a的值被类型提升并扩展为4个byte后,依然是11111111 11111111 11111111 10000000 b,按照%d来解释,他是00000000 00000000 00000000 10000000 b的补码,所以表达为-128。

    以上是自己的一些理解,难免有错误,欢迎讨论。

    展开全文
  • //指针的类型错误 #include<stdio.h> #include<stdlib.h> #include<string.h> //用const来限制形参的指向不可以修改,优化代码的安全性 int Getnum(int ** const pin/*in*/){ return 1; ...
  • C语言错误分析

    2018-12-02 22:10:45
    C语言错误及处理;编译错误信息说明:Turbo C 的源程序错误分为三种类型:致命错误、一般错误和警告。 其中,致命错误通常是内部编译出错;一般错误指程序的语法错误、磁盘或内存存取错误 或命令行错误等;警告则...
  • int main(){ int i,j;for(i=1;i<10;i++)printf("&4d",i);printf("**********************************\n");for(i=1;i<10;i++)for(j=1;j<10;j++)printf((j==9)?"&4d\n":"&...}如果...
  • 不允许使用不完整的类型c语言0/* nfa.h */ #ifndef NFA_H #define NFA_H typedef struct Node_t* Node_t; typedef struct Nfa_t* Nfa_t; struct Nfa_t { int start; // start node of an NFA int accept; // accept ...
  • C语言常见的错误类型

    2020-05-02 22:14:18
    目录语法错误逻辑错误系统错误 语法错误 语法错误: 这是指程序中含有不符合语法规定的语句。 例如: 关键字或符号书写错误(将printf写成print、将数组元素引用写成a(2)等)、使用了未定义的变量、括号不配对等。 ...
  • C语言错误处理

    2020-10-26 14:33:53
    出错处理头文件 #include <assert.h> #include <...a、参数类型为 scalar (标量) 标量代表原子类型。如 int 、char 、 等非复合类型数据。 此链接详细解释了标量和复合类型 http://c.biancheng
  • c语言错误

    2011-06-07 15:36:00
    1.书写标识符时,忽略了大小写字母的区别。main(){ int a=5; printf("%d",A);} 编译程序把a和A认为是两个不同的变量名,而显示...忽略了变量的类型,进行了不合法的运算。main(){ float a,b; printf("%d",a%b);} 
  • C语言中常见的错误类型

    千次阅读 2020-03-08 12:27:40
    2.忽略变量类型,进行不合法运算 %是求余运算,得到a/b的整余数。整型变量可进行求余运算,而实型变量则不允许进行求余运算。 3.将字符常量与字符串常量混淆 字符常量是一对单引号括起来的常量,字符串常量是...
  • C语言数据类型谜题总结 如果int x<0为真,那么(x*2)<0是否一定正确? unsigned int ux一定大于等于0么? 如果(x&7)==7,那么(x<<30)<0一定正确么? C语言数据类型谜题总结 前提: int x, ...
  • C语言隐式类型转换规则。了解一下对写程序有好处,可以防止不必要的错误
  • C语言类型转换

    2018-03-06 21:55:01
    1.类型之间的转换C语言中的数据类型可以进行转换-强制类型转换-隐式类型转换2.强制类型转换强制类型转换的语法-(Type)var_name;-(Type)value;强制类型转换的结果-目标类型能够容纳目标值:结果不变-目标类型不能容纳...
  • 错误类型LUA错误共有以下5种,分别对应的是5个宏定义:#defineLUA_YIELD1//线程被挂起#defineLUA_ERRRUN2//运行时错误#defineLUA_ERRSYNTAX3//编译错误#defineLUA_ERRMEM4//内存分配错误#defineLUA_ERRERR5//...
  • c语言数据类型不对导致的计算错误

    千次阅读 2016-08-22 11:21:24
    我把我的程序简化一下,其实很简单 int x=7676; int y=7420; int z=60; long int all; all=long int(x*y*z); ...这是因为,all和其他几个数据类型不一致。我们把它改成全部都是long int就行。
  • C语言结构体类型的定义和使用(一)

    万次阅读 多人点赞 2019-08-16 16:50:39
    文章中的文字可能存在语法错误以及标点错误,请谅解; 如果在文章中发现代码错误或其它问题请告知,感谢! 0x01 结构体类型的定义 0x02 结构体类型变量的定义 0x03 结构体类型变量初始化和引用 ...
  • Turbo C(V2.0) 编译错误信息 编译错误信息 说明 Turbo C 的源程序错误分为三种类型致命错误一般错 误和警告其中 致命错误通常是内部编译出错一般错误指程序的 语法错误 磁盘或内存存取错误或命令行错误等 警告则...
  • Turbo C(V2.0)编译错误信息 编译错误信息 说明Turbo C 的源程序错误分为三种类型致命错误一般错 误和警告其中致命错误通常是内部编译出错一般错误指程序的 语法错误磁盘或内存存取错误或命令行错误等警告则只是指出...
  • 在编程过程中,不同的CPU,其数据类型的意义各不相同,所以一定要注意相应变量数据类型的定义和转换,否则在计算中可能会出现不确定的错误。 (一)C语言中的种类数据 整型:int short long 实型:float double ...
  • C语言常见错误

    2012-01-11 20:18:23
    C语言常见错误C语言中常见的错误 常用指针类型及宏定义
  • C语言错误使用

    2013-03-16 14:16:25
    但不同类型的指针变量代表从这个字节的地址完后数几个字节表示该指针所指向的内容,比如char* 类型指针变量所指向的内容就是它所指向的那个字节的地址,而float*类型变量所指向的float类型变量的值存储在他所指向的...
  • C语言错误集锦

    2012-12-24 21:35:53
    error C2143: 语法错误 : 缺少“;”(在“类型”的前面) --> main.c(5): #include int main() { int a = 10; a++; int b = 20; return 0; }标准C的写法把局部变量的定义放在函数体的首部。 #include int...
  • C语言数据类型

    2011-09-05 21:59:48
    我是菜鸟…… 文章写得不好 可能有很多考虑不周的地方 甚至 会有许多错误 ...这篇文章主要写C语言int与long int上遇到的一个问题,文章最后是我未解的疑问,还请各位耐心给予解惑…… 题目:求n!,n

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,856
精华内容 1,142
关键字:

c语言错误类型

c语言 订阅