C和C++中<<是什么意思,有什么区别?

2024-11-15 21:06:22
推荐回答(5个)
回答1:

<<和>>在c中是用来做位运算的,在C++中被重载了,即可以做位运算也可以做输入输出流。

区别如下:

1、应用场合不同:

C语言是结构化和模块化的语言,是面向过程的。当程序的规模较小时,C语言运用起来得心应手。但是当问题比较复杂、程序的规模比较大的时候,C语言就会展现出它的局限性;

正是因为有大规模的程序需要去处理,C++就应运而生了。C++是由C发展而来的,与C语言兼容。C++既可用于面向过程的结构化程序设计,也可用于面向对象的程序设计,是一种功能强大的混合型的程序设计语言。

2、输入/输出函数不同:

C语言:inta=1;doubled=3.1415926;printf("%d\n",a);

printf("a=%d\n",a);printf("b=%6.3f, b=%6.2f, b=%.3f\n",b,b,b);scanf("%d",&a);//取地址,输入a的值,%d和%f称为格式说明符,表示以此格式输出对应表达式的值,\n表示换行。

%6.3f中的6表示占六列,表示输出对应浮点表达式值时只输出三位小数。

C++:int a=5;float b;cout << "a=">b;

cout必须要和”<<“一起使用,cin必须要和”>>“一起使用。

得C++中的输入输出流是很强大的,不像C里面还要指定格式,endl表示换行。

3、字符串不同:

C语言,chara[20]="hangzhou";char*p="hangzhou";C++:strings1="abcd";strings2="helloworld";strings3=s1+s2;s1=s2;

c++比c更方便许多。

C语言中所有的头文件都带后缀 .h(比如stdio.h)C++中有系统提供的头文件不带后缀 .h,用户自己编制的头文件可以有后缀 .h。

structStudent//声明了一个名为Student的结构体类型:

{intnum;charname[20];charsex;};

Studentstud1,stud2;//定义了两个结构体变量,默认情况下为public类型。

C++中的类将数据和操作封装在一起,并且指定了访问权限。如果不指定public,也不指定private,则系统就默认为私有的,这一点和C语言中的结构体是不一样的。

其实总的来说,C语言和c++,他们除了表现在使用场合不同,还有更多的是语法的不同,C语言更加注重过程,c++比C语言更高一级。

扩展资料:

从语言特性角度上来看,C++是C的超集。

在(C++)-C的这部分语言特性中有很多会降低执行效率。一个例子是dynamic_cast,执行一个dynamic_cast要消耗100-300个CPUcycles,因为机器要跳到一段特别的snippet(一小段程序)去检查typeinheritance。

除了语言特性,通常比较语言也会比较它们的标准数据库。

例如C++中std::sort函数肯定比C语言中的qsort快(因为templatefunction的优点),但是C++中的iostream系列又比C的printf系列慢几乎3倍。

但是由于C++标准库功能比C语言大得多,许多时候可以用较少的开发时间就在C++中实现相同的算法。

另外,不同编译器对语言的执行效率影响也很大。

参考资料:百度百科-C语言

回答2:

"<<和>>在c中是用来做位运算的,在C++中被重载了,即可以做位运算也可以做输入输出流的... "正解

<<是左移位运算符,每移一位相当于*2,当然比乘法快的,在C中总是要选择最快的。

>?= 没有看出来,我想这段代码不是标准c++的,如果真是这样的话a>?=b的意思就应该是a=a>b?a:b的一种简略形式,使用这种表达应该能够得到优化的,会更快一点的。

当然没有超出范围了,在32位机里int是32位的,29位是不会超出范围的,这样做就是因为习惯了这种写法了吧,因为在变量的时候<<比乘法要快的,所以习惯了,常量也这样写了

回答3:

  1. C中:

    <<可作为左移算符 (向左移一位,右边自动补0)

    10001011 << 1=

    00010110 = 22

    相当于二进制的每个数都变成当前值的两倍,结果就是变成当前值的两倍,速度比乘法快。

    n * 2 == (n << 1)

  2. C++中:

  • <<单用可作为左移算符

  • cout << 可作为输出使用,相当于prinf

回答4:

<<和>>在c中是用来做位运算的,在C++中被重载了,即可以做位运算也可以做输入输出流的...

回答5:

即可以做位运算也可以做输入输出流,
本例中1用32位的2进制表示为00...31个0...1,<<表示所有的数字向左移29位,溢出的抛去,补入的用0补全,即001000...29个0...,化为十进制也就是2^29。