
26
C语言的内部运算符很丰富,运算符是告诉编译程序执行特定算术或逻辑 *** 作的符号。C语言有三大运算符:算术、关系与逻辑、位 *** 作。另外,
C还有一些特殊的运算符,用于完成一些特殊的任务。
261
算术运算符
表2
-
5列出了C语言中允许的算术运算符。在C语言中,运算符“
+”、“-”、“”和“
/”的用法与大多数计算机语言的相同,几乎可用于所有C语言内定义的数据类型。当“
/”被用于整数或字符时,结果取整。例如,在整数除法中,
1
0
/
3
=
3。
一元减法的实际效果等于用-
1乘单个 *** 作数,即任何数值前放置减号将改变其符号。模运算符“%”在C语言中也同它在其它语言中的用法相同。切记,模运算取整数除法的余数,所以“%”不能用于float和double类型。
表2-5
算术运算符
运算符
作用
运算符
作用
-
减法,也是一元减法
%
模运算
+
加法
--
自减(减1)
乘法
++
自增(增1)
/
除法
下面是说明%用法的程序段。
int
x,y;
x
=
10;
y
=
3;
printf("%d",x/y);
/
显示3
/
printf("%d",x%y)
;
/
显示1
,整数除法的余数
/
x
=
1
;
y
=
2
;
printf("%d,%d",x/y,x%y)
;
/
显示0,1
/
最后一行打印一个0和一个1,因为1
/
2整除时为0,余数为1,故1
%
2取余数1。
262
自增和自减
C语言中有两个很有用的运算符,通常在其它计算机语言中是找不到它们的—自增和自减运算符,
+
+和-
-。运算符“
+
+”是 *** 作数加1,而“-
-”是 *** 作数减1,换句话说:x
=
x
+
1
;
同+
+
x
;
x
=
x
-
1
;
同-
-
x
;
自增和自减运算符可用在 *** 作数之前,也可放在其后,例如:
x
=
x
+
1;可写成+
+
x;或x
+
+;但在表达式中这两种用法是有区别的。自增或自减运算符在 *** 作数之前,
C语言在引用 *** 作数之前就先执行加1或减1 *** 作;运算符在 *** 作数之后,
C语言就先引用 *** 作数的值,而后再进行加1或减1 *** 作。请看下例:
x
=
1
0;
y
=
++x;
此时,y
=
11。如果程序改为:
x
=
10
;
y
=
x++
;
则y
=
10。在这两种情况下,
x都被置为11,但区别在于设置的时刻,这种对自增和自减发生时刻的控制是非常有用的。
在大多数C编译程序中,为自增和自减 *** 作生成的程序代码比等价的赋值语句生成的代码要快得多,所以尽可能采用加1或减1运算符是一种好的选择。
下面是算术运算符的优先级:
最高
++、--
-(一元减)
、/、%
最低
+、-
编译程序对同级运算符按从左到右的顺序进行计算。当然,括号可改变计算顺序。C语言处理括号的方法与几乎所有的计算机语言相同:强迫某个运算或某组运算的优先级升高
对于任意实数的开方,可以使用切线法得到其任意精度的结果,切线法的迭代公式为:
取任意初始值,以上迭代序列将会收敛:
实际应用中一般取初始值为稍微大的实数,这样可以加快序列的收敛速度。
c语言代码如下: // 2015-12-24// By: ChenYu#include mathh#include stdioh#define ABS(a) ((a)<0-(a):(a))#ifdef _WIN32 typedef unsigned __int64 uint64;#else typedef unsigned long long uint64;#endif// calculate a approximate valuestatic double calcInitRoot(double x, int n){ const uint64 exptMask=((uint64)1<<11)-1; const uint64 fracMask=((uint64)1<<52)-1; uint64 xInt=(uint64)&x; int xExpt=(int)((xInt>>52)&exptMask)-1023; xInt=((uint64)((xExpt+1024n-1)/n)<<52)+(xInt&fracMask)/n; return (double)&xInt;}double calcRoot(double x, int n){ int i, j, s=1-((x<0)<<(n&1)); double a=ABS(x); double x1, x0=calcInitRoot(a, n); double err=x01e-14; if(x==0) return 0; for(i=1; i<50; i++) { double xn=1; for(j=0; j<n-1; j++) xn=x0; x1=((n-1)x0xn+a)/(xnn);// printf(x%d=%14f\n, i, x1); if(ABS(x1-x0)<=err) break; x0=x1; } return sx1;}void main(){ double x=-31141592653589793; int n=11; double y=calcRoot(x, n); printf(root(%g,%d)=%+14f\n, x, n, y); printf(root(%g,%d)=%+14f\n, x, n, pow(ABS(x), 10/n));}
以上就是关于在C语言中,怎样用 *** 作符表示一个数的开方全部的内容,包括:在C语言中,怎样用 *** 作符表示一个数的开方、开方的计算机程序代码、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)