C++是C语言的一个超集,这意味着几乎所有合法的C程序都是合法的C++程序。C++继承了C语言的大部分语法和结构,并且在此基础上添加了许多新的特性,比如面向对象编程、模板、异常处理等。
C++与C语言之间的相似性要比C#与C语言之间的相似性更高。实际上,C++最初就是作为C语言的一个增强版本而开发的,因此两者在语法、结构和一些基本概念上非常相似。
相比之下,C#虽然也受到C语言的影响,但在语法和特性上与C语言有更大的差异。C#更加注重面向对象编程,引入了一些新的概念和特性,比如属性、委托、事件等,这些特性在C语言和C++中并不直接存在。
因此,对于熟悉C语言的开发者来说,学习C++可能会更容易一些,因为它们之间的相似性更高。但是,无论是C++还是C#,都有其各自的优势和适用场景,取决于具体的应用需求和开发目标。
❄️DEV C++
-
Dev C++严格遵守 C++ 的标准
-
中文字乱码
区域设置—>管理语言设置—>勾选beta -
中文字体与背景色一致,导致显示除非选中文字否则显示不出
solution:取消勾选 <ID 27071…>
-
Dev C++编译结果不显示
关于DEVC++编译没错,但运行不出来的可能原因,安装的时候(第二次选语言)选了中文,可能是。 -
改Dev C++背景色
❄️CODE
- C++ 不以行末作为结束符的标识,可以在一行上放置多个语句。
- 把常量定义为大写字母形式,是一个很好的编程实践。
❄️第一个代码
#include <iostream>
int main(){
std::cout<<"hello world\n"; //输出hello world
return 0;
}
#include <iostream>
using namespace std;
int main(){
cout<<"hello world\n"; //输出hello world
return 0;
}
❄️输入和输出
#include <iostream>
//定义了 cin、cout、cerr 和 clog 对象,
//分别对应标准输入流、标准输出流、非缓冲标准错误流和缓冲标准错误流。
使用 cerr 流来显示错误消息,其他的日志消息则使用 clog 流来输出。
#include <iostream>
using namespace std;
int main(){
char input[10];
char ex[]="test error";
char log[]="test log";
cerr<<"Error: "<<ex<<endl;
clog<<"Log: "<<log<<endl;
cout<<"please input a word: ";
cin>>input;
cout<<"the word is "<<input<<endl;
return 0;
}
❄️变量和运算
#include <iostream>
#include <limits>
#define PI 3.14 //宏定义常量
using namespace std;
int main(){
cout<<2023<<endl;
cout<<2023<<"\n";
cout<<PI<<endl;
cout<<'a'<<endl;
cout<<"hello world"<<endl;
cout<<"A"<<endl;
cout<<"\101"<<endl; /*A*/
cout<<"\x41"<<endl; /*A*/
cout<<"\052"<<endl;
cout<<"a";cout<<"b"<<endl; /*ab*/
cout<<"type\t\t"<<"-----------size-----------"<<endl;
cout<<"bool\t\t"<<"Byte = "<<sizeof(bool);
cout<<" min = "<< (numeric_limits<bool>::min)();
cout<<" max = "<< (numeric_limits<bool>::max)()<<endl;
cout<<"char\t\t"<<"Byte = "<<sizeof(char);
cout<<" min = "<< (numeric_limits<char>::min)();
cout<<" max = "<< (numeric_limits<char>::max)()<<endl;
cout<<"signed char\t"<<"Byte = "<<sizeof(signed char);
cout<<" min = "<< (numeric_limits<signed char>::min)();
cout<<" max = "<< (numeric_limits<signed char>::max)()<<endl;
cout<<"unsigned char\t"<<"Byte = "<<sizeof(unsigned char);
cout<<" min = "<< (numeric_limits<unsigned char>::min)();
cout<<" max = "<< (numeric_limits<unsigned char>::max)()<<endl;
cout<<"short\t\t"<<"Byte = "<<sizeof(short);
cout<<" min = "<< (numeric_limits<short>::min)();
cout<<" max = "<< (numeric_limits<short>::max)()<<endl;
cout<<"int\t\t"<<"Byte = "<<sizeof(int);
cout<<" min = "<< (numeric_limits<int>::min)();
cout<<" max = "<< (numeric_limits<int>::max)()<<endl;
cout<<"long\t\t"<<"Byte = "<<sizeof(long)<<endl;
cout<<"float\t\t"<<"Byte = "<<sizeof(float)<<endl;
cout<<"double\t\t"<<"Byte = "<<sizeof(double)<<endl;
cout<<"long double\t"<<"Byte = "<<sizeof(long double)<<endl;
cout<<"string\t\t"<<"Byte = "<<sizeof(string)<<endl;
string greeting="hello,world\n";
cout<<greeting;
const int X=2;
const int Y=2;
int area;
area=X*Y;
cout<<area;
return 0;
}
#include <iostream>
using namespace std;
int main(){
//算术运算 加减乘除取余自增自减
int a=3;
int b=2;
cout<<"a+b="<<a+b<<endl;
cout<<"a-b="<<a-b<<endl;
cout<<"a*b="<<a*b<<endl;
cout<<"a/b="<<a/b<<endl;
cout<<"a%b="<<a%b<<endl;
cout<<"a++="<<a++<<endl;
cout<<"b--="<<b--<<endl;
//关系运算 == != > < >= <=
if(a==b){cout<<"a=b"<<endl;}
else{
cout<<"a!=b"<<endl;
}
if(a<b){cout<<"a<b"<<endl;}
else{
cout<<"a>=b"<<endl;
}
if(a>=b){cout<<"a>=b"<<endl;}
else{
cout<<"a<b"<<endl;
}
//逻辑运算 与或非 && || !
//按位与 按位或 异或 取反& | ^ ~
//左移 右移 << >>
if(a&&b){cout<<"true"<<endl;}
if(a||b){cout<<"true"<<endl;}
//赋值运算 = += -+ *= /= %= <<= >>= &= ^= |=
int j=2;cout<<j<<endl;
j<<=2; cout<<j<<endl;
j>>=2; cout<<j<<endl;
j&=2; cout<<j<<endl;
j^=2; cout<<j<<endl;
j|=2; cout<<j<<endl;
j+=2; cout<<j<<endl;
j-=2; cout<<j<<endl;
j*=2; cout<<j<<endl;
j/=2; cout<<j<<endl;
j%=2; cout<<j<<endl;
//其他运算 sizeof() 条件运算符 三目 ? : 逗号运算符 ,
//成员运算符 . -> 强制转换 cast 指针 & *
}
#include <iostream>
#include <cmath>
using namespace std;
int main(){
short s=10;
int i=-1000;
long l=100000;
float f=230.47;
double d=200.374;
cout<<"sin(d)="<<sin(d)<<endl;
cout<<"abs(i)="<<abs(i)<<endl;
cout<<"floor(d)="<<floor(d)<<endl;
cout<<"sqrt(f)="<<sqrt(f)<<endl;
cout<<"pow(d,2)="<<pow(d,2)<<endl;
return 0;
}
随机数生成
#include <iostream>
#include <ctime>
//#include <cstdlib>
using namespace std;
int main(){
int i,j;
srand((unsigned)time(NULL));
for(i=0;i<10;i++){
j=rand();
cout<<"随机数 "<<j<<endl;
}
return 0;
}
❄️日期和时间
#include <iostream>
#include <ctime>
using namespace std;
int main(){
time_t now=time(0);
cout<<"本地日期和时间 "<<ctime(&now)<<endl;
tm *lctm=localtime(&now);
cout<<"本地日期和时间 "<<asctime(lctm)<<endl;
/*tm *gmtm=gmtime(&now);
cout<<"UTC 日期和时间 "<<asctime(gmtm)<<endl;//UTC GMT 格林尼治标准时间*/
cout<<"年 "<<1900+lctm->tm_year<<endl;
cout<<"月 "<<1+lctm->tm_mon<<endl;
cout<<"日 "<<lctm->tm_mday<<endl;
cout<<"时间 "<<lctm->tm_hour<<":";
cout<<lctm->tm_min<<":";
cout<<lctm->tm_sec<<endl;
}
❄️函数的调用
#include <iostream>
using namespace std;
//函数声明
int max(int num1,int num2,int num3); //选最大的数
int sum(int num1,int num2,int num3); //求和
int main(){
int a=200;
int b=300;
int c=100;
int larger;int s;
larger=max(a,b,c);
s=sum(a,b,c);
cout<<"max value is "<<larger<<endl;
cout<<"sum is "<<s<<endl;
return 0;
}
int max(int num1,int num2,int num3){
int result;
if(num1>=num2 && num1>=num3) result=num1;
else if(num2>=num1 && num2>=num3) result=num2;
else result=num3;
return result;
}
int sum(int num1,int num2,int num3){
int sum;
sum=num1+num2+num3;
return sum;
}
方法二:
#include <iostream>
using namespace std;
int main(){
// 三目运算符比较大小
int a=3;int b=2;int c=5;
cout<<"max value is "<< ((a>b)?((a>c)?a:c):((b>c)?b:c)) <<endl;
// 定义一个lambda函数求和
auto sum = [](int a, int b,int c) -> int {
return a + b + c;
};
// 调用lambda函数
int s = sum(3, 4, 5);
cout<<"sum is "<<s<<endl;
return 0;
}
❄️字符串操作
#include <iostream>
#include <string>
using namespace std;
int main(){
string str="12233";
string str1="dshg";
string str2;
int len;
//copy
str2=str;
cout<<"str2="<<str2<<endl;
//拼接
cout<<"str+str1="<<str+str1<<endl;
//len
cout<<"str2 length="<<str2.size()<<endl;
return 0;
}
#include <iostream>
#include <cstring>
using namespace std;
int main(){
char str[13]="test";
char str1[9]="11a0";
char str2[13];
//int len;
//copy
strcpy(str2,str);
cout<<"strcpy(str2,str1)="<<str2<<endl;
//字符拼接 strcat
cout<<"strcat(str1,str)="<<strcat(str1,str)<<endl;
//字符长度
//最后一个字符是\0 即null
//C++ 中有大量的函数用来操作以 null 结尾的字符串
cout<<"str2 length="<<strlen(strcat(str,str1))<<endl;
//字符比较
//str1=str2 return_value=0 ;< <0; > >0
cout<<"strcmp(str1,str2)="<<strcmp(str1,str2)<<endl;
return 0;
}
❄️ERROR
❄️[Error] ‘::main’ must return ‘int’
Dev C++报错 hello_world.cpp [Error] ‘::main’ must return ‘int’
Dev C++严格的遵守 C++ 的标准
这个错误是因为在C++中,main函数必须返回一个整数类型的值。通常情况下,main函数应该是这样的:
int main() {
// 你的代码
return 0;
}
如果你的main函数没有返回任何值,或者返回值的类型不是int,就会导致这个错误。请确保你的main函数的返回类型是int,并且在函数的结尾处使用return 0;
语句来返回一个整数值。
另外,如果你的main函数接受命令行参数,可以使用下面的形式:
int main(int argc, char* argv[]) {
// 你的代码
return 0;
}
确保你的main函数符合这些要求,就可以解决这个错误。