c语言中
Ⅰ c语言中“%=”是什么意思
%是求模的意思,两边必须是整数类型的,求模常用符号为mod,就是小学学的求余运算符。
例如50%23=4,因为余数为4,所以在程序中必须保证两边为整数才是这个意思。
类似的还有 +=,-=,*=,/= 等。但是a%=b这种运算的效率,要高于a=a%b这种的效率,因为a%=b是直接在a上做求余运算,a=a%b则是先用一个临时变量的来记录好a的值,在进行运算,之后将运算结果再赋值给a,a=a%b要比直接a%=b多了两次赋值运算,因而后者的效率更高。
例如:
a + b, c = b, c++
逗号运算符的优先级是所有运算符中级别最低的,通常配合 for 循环使用。逗号表达式最右边的子表达式的值即为逗号表达式的值。上例中,c++ 的值(c 自增之前的值)即为该表达式的值。
逗号运算符保证左边的子表达式运算结束后才进行右边的子表达式的运算。也就是说,逗号运算符是一个序列点,其左边所有副作用都结束后,才对其右边的子表达式进行运算。因此,上例中,c 得到 b 的值后,才进行自增运算。
以上内容参考:网络-C语言运算符
Ⅱ C语言中->是什么意思啊
“->”是一个整体,它主要用于指向结构体、C++中的class等含有子数据的指针用来取子数据。
换种说法,如果我们在C语言中定义了一个结构体,然后申明一个指针指向这个结构体,那么我们要用指针取出结构体中的数据,就要用到“->”。
举例:
struct Data
{int a,b,c;}; ——定义结构体
struct Data * p; ——定义结构体指针
struct Data A = {1,2,3}; ——声明变量A
int x; ——声明一个变量x
p = &A ; ——让p指向A
x = p->a; ——取出p所指向的结构体中包含的数据项a赋值给x
由于此时p指向A,因而 p->a == A.a,也就是1。
对于一开始的问题 p = p->next,这应该出现在C语言的链表,这里的next应该是一个与p同类型的结构体指针,其定义格式应该是:
struct Data
{int a;struct Data * next;};
main()
{struct Data * p;
p = p->next;
}
Ⅲ C语言中>>和<<如何使用
C语言中<< 代表左移运算符,>> 代表右移运算符,位移位运算符是将数据看成二进制数,对其进行向左或向右移动若干位的运算。
<< 代表左移运算符:左移运算符用来将一个数的各二进制位全部左移若干位,移动的位数由右操作数指定,右操作数必须是非负值,其右边空出的位用0填补,高位左移溢出则舍弃该高位。
例如:设无符号短整型变量a为0111(对应二进制数为0000000100010001),则:a<<3 结果为0888(对应二进制数为0000100010001000)。
>> 代表右移运算符:右移运算是将一个二进制位的操作数按指定移动的位数向右移动,移出位被丢弃,左边移出的空位或者一律补0,或者补符号位,这由不同的机器而定。在使用补码作为机器数的机器中,正数的符号位为0,负数的符号位为1。
例如:var temp = 56 >> 2 变量temp的值为 14,因为56 (即二进制的 00111000)向右移两位等于14 (即二进制的 00001110) 。
(3)c语言中扩展阅读:
相关运算规则:
1、在移位运算时,byte、short和char类型移位后的结果会变成int类型,对于byte、short、char和int进行移位时,规定实际移动的次数是移动次数和32的余数,也就是移位33次和移位1次得到的结果相同。
2、移动long型的数值时,规定实际移动的次数是移动次数和64的余数,也就是移动66次和移动2次得到的结果相同。
3、位移位运算符的优先级:算术运算符优先于位移位运算符优先于关系运算符,位移位运算符是同级别的,结合性是自左向右。
Ⅳ c语言中符号<<是什么意思
符号<<在C语言中代表了左移运算符。
<<用来将一个数的各二进制位全部左移若干位,移动的位数由右操作数指定,右操作数必须是非负值,其右边空出的位用0填补,高位左移溢出则舍弃该高位。
(4)c语言中扩展阅读
将a的二进制数左移2位,右补0。若a=15,即二进制数00001111,左移2位得00111100,即十进制数60(为简单起见,用8位二进制数表示十进制数15,如果用16位二进制数表示,结果是一样的)。高位左移后溢出,舍弃。
左移一位相当于该数乘以2,左移2位相当于该数乘以2^2=4。上面举的例子15<< 2=60,即乘了4。但此结论只适用于该数左移时被溢出舍弃的高位中不包含1的情况。
例如,假设以一个字节(8位)存一个整数,若a为无符号整型变量,则a=64,即二进制数01000000时,左移一位时溢出的是0。而左移2位时,溢出的高位中包含1,则不符合上述结论。
Ⅳ C语言中/与%的区别
%作为运算符是用来取余的,/是除法运算。
例如:除法运算式
65 ÷8 = 8余1
那么
65 / 8 = 8
65 %8 = 1
(5)c语言中扩展阅读
C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。
Ⅵ C语言中%什么意思
%是求模的意思,两边必须是整数类型的,它的作用是求模常用符号为mod,就是求余运算符。
1、例如50%23=4,因为余数为4,就是这样的,在程序中必须保证两边为整数才是这个意思。
2、当不是这种形式时: 例如:%d就成了控制语句了 %d,%ld,%f,%lf,%-md,%.mlf等,这个应该详细了解的。
其他运算符:
1、逗号运算符
用于把若干表达式组合成一个表达式(,)。
2、指针运算符
用于取内容(*)和取地址(&)二种运算。
3、求字节数运算符
用于计算数据类型所占的字节数(sizeof)。
4、特殊运算符
有括号(),下标[],成员(→,.)等几种。
Ⅶ C语言中的/=是什么含义
这是C语言里常用的复合赋值运算,下面解释一下。
1.C
语言中的基本赋值运算
首先讲解一下C语言中的基本赋值运算,其运算符为“=”,这里不是等于,而是赋值。举例如下所示:
图中,定义了三个变量a,b,c,分别把1赋值给变量a,把2赋值给变量b,把求和表达式a+b赋值给变量c。
2.复合赋值运算符
复合赋值运算符常见的符号有:+=、-=、*=、/=、%=,有两方面的含义,首先做数学计算,而后再赋值。
从图上可以看出,运算符两边的变量先做左边的数学运算,然后将结果赋值给左边的变量。这样的写法简化了C语言的代码,结构上看起来比较清爽,提升代码效率。
举例如下:
执行完a += 1后,a = 2;
执行完b -= a+5后,b=b-(a+5)=-5;
执行完c *= a-4后,c=c*(a-4)=-6;
c语言里有很多需要理解的符号,它跟数学符号很有关系,但有些又是区分于数学符号,比如“=”在数学上是等于的意思,所以a=1,我们读作a等于1,可是如果在c语言里,“=”是赋值的意思,a=1是指把1赋值给a,而a==1才读作a等于1。
所以我首先要弄清楚基本的运算符号如+,-,/,*,%,&,!=等的意思,至于乘法运算,c语言里没有×这个符号,而是用了*,对于除法,没有÷这个符号,用了/,例如5*3就是15,6/3就是2
像a=a+1,就是把a+1赋值给了a,我们可以简便写法那就是a+=1.
同理a-=1其实就是a=a-1.
a/=5就是a=a/5,a*=6就是a=a*6。
例如a=20,a*=6,那么结果就是a=120
例如a=30,a/=6,那么结果就是a=5
希望能解决到你的问题
这是C语言里的简化写法(也叫复合运算符)
即可将
加+ 减- 乘* 除/ 求余数%
五种运算符的表达式
a=a#x
表示为
a#=x
其中#表示五种运算符,x表示变量或某个值
其实++,--也是哦
Ⅷ c语言中 %c表示什么
%c在C语言中代表字符型格式符。
%s在C语言中代表字符串型格式符。
%c和%s一般用在printf、sprintf等字符串格式化函数中,用于决定格式化参数的数据类型。如printf("%s", a)会将变量a作为字符串类型进行格式化。
printf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出信息。
printf()函数的调用格式为: printf("<格式化字符串>", <参量表>)。
格式输出,它是c语言中产生格式化输出的函数(在 stdio.h 中定义)。用于向终端(显示器、控制台等)输出字符。格式控制由要输出的文字和数据格式说明组成。要输出的文字除了可以使用字母、数字、空格和一些数字符号以外,还可以使用一些转义字符表示特殊的含义。
(8)c语言中扩展阅读:
C语言中所有格式化类型的定义:
1、%d/i
接受整数值并将它表示为有符号的十进制整数,i是老式写法
2、%o
无符号8进制整数(不输出前缀0)
3、%u
无符号10进制整数
4、%x/X
无符号16进制整数,x对应的是abcdef,X对应的是ABCDEF(不输出前缀0x)
5、%f(lf)
单精度浮点数和双精度浮点数用f(lf在C99开始加入标准,意思和f相同)
6、%e/E
科学计数法表示的数,此处"e"的大小写代表在输出时用的“e”的大小写
7、%g/G
有效位数,如:%.8g表示单精度浮点数保留8位有效数字。
8、%c
字符型。可以把输入的数字按照ASCII码相应转换为对应的字符
9、%s/S
字符串。输出字符串中的字符直至字符串中的空字符(字符串以'