C语言中的5 个问题

作者&投稿:倪汤 (若有异议请与网页底部的电邮联系)
为什么c语言表达式中 5+1/2 等于5~

5+1/2在C语言中确实等于5。

原因如下:
/是C语言中算术运算符中的除号;
该符号同时具有整数除和实数除的功能,当两个运算对象都是整数就做整数除,有一个运算对象是浮点数时就执行实数除。
所谓整数除就是舍弃余数,只留下商;因此5/2的结果是2,而5.0/2的结果是2.5。

显然1/2是整数除,商位0,所以5+0还是等于5。

#includemain(){ printf("-3%%5=%d
",-3%5); printf("3%%5=%d
",3%5); printf("3%%-5=%d
",3%-5); printf("-3%%2=%d
",-3%2); printf("-3%%-2=%d
",-3%-2); printf("-3%%-5=%d
",-3%-5); printf("4%%-5=%d
",4%-5); printf("-4%%-5=%d
",-4%-5); printf("0%%-5=%d
",0%-5);}运行结果:
-3%5=-3
3%5=3
3%-5=3
-3%2=-1
-3%-2=-1
-3%-5=-3
4%-5=4
-4%-5=-4
0%-5=0


n%m,先分别对n和m取绝对值进行取余运算,结果的符号与n一样,与m无关。

1.整型int(如100);单精度类型float(如3.14);双精度类型double(如2456.75);字符类型char(如a).单精度类型与双精度类型的差别主要是数据所占位数(单32,即4字节;双64,即8字节)与值域的广度(双的值域较大).
2.可参考目鱼的解答
3.数据类型转换
(1)自动
float自动转换成double
char自动转换成int(这两个是必须的转换,也就是说float与char不管和什么类型的数据运算,都要先自动转换,之后依据优先级进行运算)
int与double运算,int自动转换成double

char ch='a';
int i=13;
float x=3.14;
double y=7.528e-6;
运算表达式为:i+ch+x*y
则:ch先转换成int型,计算i+ch,结果为int型;
再将x转换成double型,计算x*y,结果为double型;
最后将i+ch的结果转换成double型,进行运算,表达式的最后值为double型.
(2)强制
利用强制类型转换运算符准换成所需类型
如 (int)(a+b) 强制将a+b的值转换成int型
(double)b 强制将b转换为double型
又如
int a=7,b=2;
float y;
y=(float)a/b;
先将a转换成float型,再进行运算;
注意与y=(float)(a/b)的区别;
4.5.scanf("%d,%f",&a,&b)
printf("beautiful") 直接输出
printf("%d",a) 输出a
这是简单的,具体的格式控制比较麻烦,因为涉及到%d,%s,%f,%c等各种数据类型,建议找书看吧.

1:整数就是整形,有小数点的就是符点型
2:
%是取模,也就是取余数,例如7%3就等于1
/是除以,整除的话应该没什么问题,有余数的除法,电脑会自动把小数去掉,例如1/2是0
4:
数据输入是scanf,一般输入scanf("***",%d);引号中的内容就是你要打进去的,d是数据类型,是整形(int),如果是符点型的话,就是f
如果是数组的话,就是gets();括号中是数组名
5:
输出的话是printf("***",%d)跟scanf差不多
数组是puts

第2个问题我可以回答:

%是除后剩余的。例: 11%5=1 %例: 15%4=3
%详细说明:15%4=3 也就是15减去能除于4的(也就是12)剩余3。(这是我的理解)
/除 例:11/5=2.2 和正常数学算法一样

我小学未毕业也学编程 这个是我前段时间才搞明白的。

1. 有整形、字符形等等。先要定义。
2.%是取余的意思,比如11%5为2,即11/5的余数。
3.自动转换取新的,强制转换要赋值后才取新的。
4以后的问题可否问得详细点。


建阳市15824573158: c语言的几个问题 -
单郭基多: SPSR = 0; n 因为 SPSR = 0; 是一个完整的语句,后面的 n 是另外一个语句,也就是一个变量,在这个语句后也要加 ; 才正确.SREG|=0X80 中的 “|”是 C 语言中的按位或操作符,也就是把 SREG 中的每一位与 0x80的每一位进行或操作,注意操作中不进位.SREg=0x80 是赋值语句,将 0x80 的值传送到 SREg 中.return(acxx) 和 return acxx 没有区别.关于调用一个数组,d 数组被调用时,如果是传值调用,d 中元素的值不变,如果按指针调用,调用 d 的函数可以改变 d 中元素的值.

建阳市15824573158: C语言的5个简答题 -
单郭基多: 一. 1.静态数据成员的定义.静态数据成员实际上是类域中的全局变量. 2.静态数据成员被 类 的所有对象所共享,包括该类派生类的对象.即派生类对象与基类对象共享基类的静态数据成员. 3.静态数据成员可以成为成员函数的可选参数,而...

建阳市15824573158: C语言中的5 个问题 -
单郭基多: 1.整型int(如100);单精度类型float(如3.14);双精度类型double(如2456.75);字符类型char(如a).单精度类型与双精度类型的差别主要是数据所占位数(单32,即4字节;双64,即8字节)与值域的广度(双的值域较大).2.可参考目鱼...

建阳市15824573158: C语言中几个问题
单郭基多: 1,x=y++的含义是x=y;y++;如果x=++y,结果才是x=11 2,这个问题你是不是打错了?如果前者也是p*=i的话,那么他们的功能是不同的,因为第一每循环一次p都被重新赋值为1,最后为p=5;而第二个只在第一次循环的时候赋值p=1,其余p值为上次循环得到的值,结果为p=5! 3,'\'是转义字符,他后面接数字的话代表一个字符的ASCII码,'\72'代表了'H' 建议你自己动手写点代码运行以下,设断点追踪一下就可以得到这些答案 初学者要多动手,这很有帮助

建阳市15824573158: C语言中的某些问题
单郭基多: 1、无符号类型是一个不带正负号的一个数值,有符号类型就是带上正负号的数值. 2、用户自定义函数,顾名思义,就是你自己构造的一个函数,是一个自己写的函数,里面的算法,是你自己想出来的独一无二的,它与系统函数相对,系统函...

建阳市15824573158: C语言的一些问题
单郭基多: 1.i可以为任意值,for(int i=?;i<=5;i++).如果i<5执行,大于5就结束了. 2.while是空语句,就是不执行了,没有内容执行了,在为以后开发做准备是,肯能做些空的东西放那. 3.没有初始,就没有最开始的,他就不知从那开始,也就没法执行了,就报错了.如第一个,不说i为多少,你怎么知道i《=5呀. 4.如果有匹配的,就可以break了,如果没有break,就全部执行了,如果没有匹配的,只能执行default.

建阳市15824573158: C语言问题5
单郭基多: 正确的是c. 1、2楼显然没有正确理解数组和指针.3楼的答案是对的,但解释有点问题. a[2][3]是1个2维整型数组,它的每1个元素都是1个整型变量.*p[3]是1个整型指针数组,它的每1个元素都是1个整型指针. a)变量的值可以改变,但地址...

建阳市15824573158: C语言 基本问题 -
单郭基多: 1.typedef能通过已有类型定义新的类型.它的语法形式和变量声明一致(区别仅在于显式前置typedef关键字和语义),声明后的类型可以用来直接声明该类型的变量.typedef struct{ char dm[5];int sl; }PRO; PRO sell[200]; PRO cell; 这里声明了...

建阳市15824573158: C语言中的问题 -
单郭基多: 格式占位符(%)是在C/C++语言中格式输入函数,如scanf、printf等函数中使用.其意义就是起到格式占位的意思,表示在该位置有输入或者输出. 格式字符说明 格式占位符(%)可以以下字母配合使用用来表示某些特定的输入输出. %a,%A...

建阳市15824573158: c语言的几个小问题
单郭基多: c语言中声明函数的时候确实是不可以将另一个函数来作为形参的,因为C的编译原理决定了,在调用函数之前要将参数压栈,只有已知类型的数据才可以压栈,函数是没法压栈的. 那么有时候我们确实需要这么做那怎么办呢,比如函数里可能会要使用到回调函数,而且回调的目的可能不尽相同,这时候我们可以用函数指针! 回去复习一下typedef怎样定义一个函数类型指针吧

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网