C/C++ 基础知识

C 语言优秀学习网站

C 语言的注释

  • 单行注释
/* comment goes here */
// comment goes here
  • 多行注释
/*
* comment goes here
*/
  • Example
// 这是一个倒序 9x9 乘法表
#include <stdio.h>
int main()
{
/* 定义了 i,j,result 三个局部变量 */
int i, j, result;
for (i = 9; i > 0; i--) {
for (j = 1; j <= i; j++) {
printf("%d*%d=%d\t", i, j, i * j);
}
printf("\n");
}
return 0;
} // 结果 /*
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25
4*1=4 4*2=8 4*3=12 4*4=16
3*1=3 3*2=6 3*3=9
2*1=2 2*2=4
1*1=1
*/

C keywords

Keywords defined by ANSI and ISO C90.

auto           double       int            struct
break else long switch
case enum register typedef
char extern return union
const float short unsigned
continue for signed void
default goto sizeof volatile
do if static while

Words added by ISO C99.(5 个)

_Bool      _Imaginary     restrict      _Complex      inline

Words added by ISO C11.(7 个)

Alignas     _Generic      _Thread_local       _Alignof       _Noreturn      _Atomic  _Static_assert

C 语言关键字

C 语言的标识符

C 语言规定,标识符可以是字母 (A~Z,a~z)数字 (0~9)下划线_组成的字符串,并且第一个字符必须是字母下划线

在使用标识符时还有注意以下几点

  • (1) 标识符的长度最好不要超过 8 位,因为在某些版本的 C 中规定标识符前 8 位有效,当两个标识符前 8 位相同时,则被认为是同一个标识符。

  • (2) 标识符是严格区分大小写的。例如 Googlegoogle 是两个不同的标识符。

  • (3) 标识符最好选择有意义的英文单词组成做到"见名知意",不要使用中文。

  • (4) 标识符不能是 C 语言的关键字

C 语言数据类型

参考资料

在 C 编程语言中,数据类型分类如下...

  • 主数据类型(基本数据类型或预定义数据类型)
  • 派生数据类型(辅助数据类型或用户定义的数据类型)
  • 枚举数据类型
  • void 数据类型

Primary Datatypes

  • Integer Datatype
  • Floating Point Datatype
  • Double Datatype
  • Character Datatype

Integer Datatype

Floating Point Datatypes

  • float
  • double

Character Datatype

void Datatype

void 数据类型表示没有值或没有值。通常,void 用于指定不返回任何值的函数。我们还使用 void 数据类型来指定函数的空参数。

Enumerated Datatype

枚举数据类型是用户定义的数据类型,由整数常量组成,每个整数常量都有一个名称。关键字enum用于定义枚举数据类型。

Derived Datatypes

  • Arrays
  • Structures
  • Unions
  • Enumeration

Output Functions in C

参考资料

C 编程语言提供以下内置输出功能...

  • 1.printf()
  • 2.putchar()
  • 3.puts()
  • 4.fprintf()

printf() function

#include <stdio.h>
int main()
{
int i = 10;
float x = 5.5;
printf("%d %f\n", i, x);
return 0;
}
#include <stdio.h>
int main(){
int i = 10;
float x = 5.5;
printf("Integer value = %d, float value = %f\n",i, x);
return 0;
}

/* C 编程语言中的每个函数都必须具有返回值。printf()函数也有整数作为返回值。
printf()函数返回一个与其打印的字符总数相等的整数值。 */
#include <stdio.h>
int main(){
int i;
i = printf("btechsmartclass");
printf(" is %d number of characters.\n",i);
}
#include <stdio.h>
int main()
{
printf("Welcome to\n");
printf("btechsmartclass\n");
printf("the perfect website for learning\n");
return 0;
}

putchar() function

putchar()函数用于在输出屏幕上显示单个字符。putchar()函数打印作为参数传递给它的字符,并返回与返回值相同的字符。此功能仅用于打印单个字符。要打印多个字符,我们需要多次写入或使用循环语句。

#include <stdio.h>
int main(){
char ch = 'A';
putchar(ch);
putchar('\n');
}

puts() function

puts()函数用于在输出屏幕上显示字符串。puts()函数打印字符串或字符序列,直到换行符。

#include <stdio.h>
int main(){
char name[30];
printf("\nEnter your favourite website: ");
gets(name);
puts(name);
}

C 语言中的常数

参考资料

在 C 编程语言中,常量类似于变量,但常量在程序执行期间仅保存一个值。这意味着,一旦将值赋值给常量,则在程序执行期间不能更改该值。将值分配给常量后,它将在整个程序中得到修复。常数可以定义如下...

常量是一个命名的内存位置,它在整个程序执行过程中只保存一个值。

In C programmig language, constant can be of any datatype like integer, floating point, character, string and double etc.

  • 整数常量
例子:
125 -----> 十进制整数常量
O76 -----> 八进制整数常量
OX3A -----> 十六进制十进制整数常量
50u -----> 无符号整数常量
30l -----> 长整数常数
100ul -----> 无符号长整数常量
  • 浮点常数

浮点常量必须包含整数和小数部分。有时它也可能包含指数部分。当浮点常量以指数形式表示时,该值必须以“e”或“E”为后缀。

例:浮点值 3.14 以指数形式表示为 3E-14。
  • 字符常量

字符常量是用单引号括起来的符号。字符常量的最大长度为一个字符。

例:'A' '2' '+'
  • 字符串常量

字符串常量是用双引号括起来的字符,数字,特殊符号和转义序列的集合。

我们在一行中定义字符串常量如下:“这是 btechsmartclass”

在 C 中创建常量

在 C 编程语言中,可以使用两个概念创建常量...

  • 1.使用 'const' 关键字
  • 2.使用 '#define' 预处理器

1.使用 'const' 关键字

我们使用 'const' 关键字创建任何数据类型的常量。要创建常量,我们在变量声明前加上 'const' 关键字。

使用 'const' 关键字创建常量的一般语法如下...
const 数据类型 constantName;
要么
const 数据类型 constantName = value;
例:const int x = 10;
这里,'x' 是一个固定值为 10 的整数常数。

  • 示例程序
#include <stdio.h>
void main(){ int i = 9 ;
const int x = 10 ; i = 15 ;
x = 100 ; // creates an error
printf("i = %d\nx = %d", i, x ) ;
}

上面的程序给出了一个错误,因为我们试图改变常量变量值(x = 100)。

2.使用 '#define' 预处理器

我们还可以使用 '#define' 预处理程序指令创建常量。当我们使用这个预处理器指令创建常量时,它必须在程序的开头定义(因为所有预处理器指令必须在 gloabal 声明之前写入)。

我们使用以下语法使用 '#define' 预处理程序指令创建常量...

#define CONSTANTNAME value
例 #define PI 3.14
这里,PI 是一个值为 3.14 的常量
  • 示例程序
#include <stdio.h>
#defien PI 3.14
void main(){
int r, area ; printf("Please enter the radius of circle : ") ;
scanf("%d", &r) ; area = PI * (r * r) ; printf("Area of the circle = %d", area) ;
}

自增与自减运算符

自增运算符为“++”,其功能是使变量的值自增 1;

自减运算符为“--”,其功能是使变量值自减 1。

它们经常使用在循环中,自增自减运算符有以下几种形式:

  • Question 1
#include <stdio.h>
int main() {
int i = 3;
int a = i ++; // a = 3, i = 4
printf("a = %d, i = %d\n", a, i);
int b = ++ a; // b = 4, a = 4
printf("a = %d, b = %d\n", a, b);
return 0;
}
  • Question 2
#include <stdio.h>
int main() {
int a = 10; // a 被赋值为 10
int b = ++ a; // b 值为 11,因为 a 是预先递增的(现在 a = 11 且 b = 11)
int c = a ++; // c 值是 11,a 值是 12
printf("a = %d, b = %d, c = %d\n", a, b, c); // a = 12, b = 11, c = 11
return 0;
}
  • Question 3
#include <stdio.h>
#include <conio.h>
int main() {
int x, a, b, c;
a = 2;
b = 4;
c = 5;
x = a -- + b ++ - ++ c ;
printf("x = %d\n", x); // x = 0
printf("a = %d,b = %d,c = %d\n", a, b, c); // a = 1,b = 5,c = 6
getch();
return 0;
}
  • Question 4
#include <stdio.h>
#include <conio.h>
int main() {
int a, b, c, d;
a = 2, c = 2;
b = a++*++a;
d = ++c * c++;
printf("a = %d, b = %d\n", a, b);
printf("c = %d, d = %d\n", c, d);
getch();
return 0;
}
/*
gcc 5 result
a = 4, b = 9
c = 4, d = 9
*/
  • Question 5
/*
添加 3 个变量可以分解为 2 个步骤。
temp = ++ a + ++ a;
b = temp + ++ a;
第一个++ a 使值为 6,第二个++ a 使它成为 7。因为 temp 中使用的两个变量都指向 a,temp = 7 + 7 = 14。
下一步很简单,b = temp + 8,这使得 b = 22。
*/
#include <stdio.h>
#include <conio.h>
int main() {
int a = 5, b;
b = ++a + ++a + ++a;
printf("a = %d,b = %d", a, b); // a = 8,b = 22
getch();
return 0;
}
  • Question 6

面试官最喜欢的技术面试问题之一:

int a = 1;
int b = 2;
int c == a +++ b;

它编译吗?如果没有,需要改变什么。运行后 a,b,c 的值为多少?

#include <stdio.h>
#include <conio.h>
int main() {
int a = 1;
int b = 2;
int c = a +++ b;
printf("a = %d,b = %d,c = %d\n", a, b, c); // a = 2,b = 2,c = 3
getch();
return 0;
}

注意:无论是 a++还是++a 都等同于 a=a+1,在表达式执行完毕后 a 的值都自增了 1,无论是 a--还是--a 都等同于 a=a-1,在表达式执行完毕后 a 的值都自减少 1。

C 语言运算符优先级

运算符优先级确定表达式的执行顺序,并决定如何计算表达式。某些运算符的优先级高于其他运算符;
例如,乘法运算符的优先级高于加法运算符。
例如,x = 7 + 3 * 2; 这里,x 被赋值为 13,而不是 20,因为 operator * 的优先级高于 +,所以它首先乘以 3 * 2 然后加到 7 中。
此处,具有最高优先级的运算符显示在表的顶部,具有最低优先级的运算符显示在底部。在表达式中,将首先执行更高优先级的运算符。

![](https://images2018.cnblogs.com/blog/1306719/201809/1306719-20180902004005575-552017983.png)

C/C++ 基础知识的更多相关文章

  1. .NET面试题系列[1] - .NET框架基础知识(1)

    很明显,CLS是CTS的一个子集,而且是最小的子集. - 张子阳 .NET框架基础知识(1) 参考资料: http://www.tracefact.net/CLR-and-Framework/DotN ...

  2. RabbitMQ基础知识

    RabbitMQ基础知识 一.背景 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然 ...

  3. Java基础知识(壹)

    写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...

  4. selenium自动化基础知识

    什么是自动化测试? 自动化测试分为:功能自动化和性能自动化 功能自动化即使用计算机通过编码的方式来替代手工测试,完成一些重复性比较高的测试,解放测试人员的测试压力.同时,如果系统有不份模块更改后,只要 ...

  5. [SQL] SQL 基础知识梳理(一)- 数据库与 SQL

    SQL 基础知识梳理(一)- 数据库与 SQL [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5902856.html 目录 What's 数据库 ...

  6. [SQL] SQL 基础知识梳理(二) - 查询基础

    SQL 基础知识梳理(二) - 查询基础 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5904824.html 序 这是<SQL 基础知识梳理( ...

  7. [SQL] SQL 基础知识梳理(三) - 聚合和排序

    SQL 基础知识梳理(三) - 聚合和排序 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5926689.html 序 这是<SQL 基础知识梳理 ...

  8. [SQL] SQL 基础知识梳理(四) - 数据更新

    SQL 基础知识梳理(四) - 数据更新 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5929786.html 序 这是<SQL 基础知识梳理( ...

  9. [SQL] SQL 基础知识梳理(五) - 复杂查询

    SQL 基础知识梳理(五) - 复杂查询 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5939796.html 序 这是<SQL 基础知识梳理( ...

  10. APP测试入门篇之APP基础知识(001)

    前言        最近两月比较多的事情混杂在一起,静不下心来写点东西,月初想发表一遍接口测试的总结,或者APP测试相关的内容,一晃就月底了,总结提炼一时半会也整不完.放几个早年总结内部培训PPT出来 ...

随机推荐

  1. css渐变知识知多少

    <!DOCTYPE html><html><head><meta charset="utf-8"> <title>教程( ...

  2. 图论:最短路-Dijkstra

    Dijkstra+堆优化具有稳定的时间复杂度,在一些数据范围要求比较严格(准确来说是图比较苛刻)的时候能够保证稳定的时间复杂度 但是Dijkstra不能够解决负边权的问题,所以在使用的时候一定要仔细读 ...

  3. 常见的Shell

    上面提到过,Shell是一种脚本语言,那么,就必须有解释器来执行这些脚本. Unix/Linux上常见的Shell脚本解释器有bash.sh.csh.ksh等,习惯上把它们称作一种Shell.我们常说 ...

  4. redis的安装和常用命令

    一.redis的安装 1.windows安装redis 下载地址:https://github.com/MSOpenTech/redis/releases. Redis 支持 32 位和 64 位.这 ...

  5. 省队集训Day1 过河

    [题目大意] 小奇特别喜欢猪,于是他养了$n$只可爱的猪,但这些猪被魔法猪教会了魔法,一不看着某些猪就会自己打起来. 小奇要带着他的猪讨伐战狂,路途中遇到了一条河.小奇找到了一条船,可惜这条船一次只能 ...

  6. DotNETCore 学习笔记 MVC视图

    Razor Syntax Reference Implicit Razor expressions <p>@DateTime.Now</p> <p>@DateTim ...

  7. NYOJ 1237 最大岛屿 (深搜)

    题目链接 描述 神秘的海洋,惊险的探险之路,打捞海底宝藏,激烈的海战,海盗劫富等等.加勒比海盗,你知道吧?杰克船长驾驶着自己的的战船黑珍珠1号要征服各个海岛的海盜,最后成为海盗王.  这是一个由海洋. ...

  8. poj 2104 可持久化线段树

    我们先离散化,然后根据权值建立线段树,假设我们现在有一颗权值线段树,表示在区间1-n中每个数出现了几次,那么我们可以二分的求出来这个区间的k大值,类似sbt的select操作,那么因为点的权值插入是无 ...

  9. js 基本类型&引用类型

    1.基本的数据类型有:undefined,boolean,number,string,null.基本类型的访问是按值访问的,就是说你可以操作保存在变量中的实际的值 基本类型的比较是值的比较.用==比较 ...

  10. 大话Spring Cloud

    研究了一段时间Spring Boot了准备向Spring Cloud进发,公司架构和项目也全面拥抱了Spring Cloud.在使用了一段时间后发现Spring Cloud从技术架构上降低了对大型系统 ...