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. last-child 选择器

    <!DOCTYPE html> <html> <head> <style> p:last-child //p的父类 的子类下最后一个,就是p兄弟层的最后 ...

  2. PAT (Top Level)1002. Business DP/背包

    As the manager of your company, you have to carefully consider, for each project, the time taken to ...

  3. 51nod 1170 1770 数数字(数学技巧)

    解题思路:看到题后,直接想到分成两种情况: ①:a*b >9 这里又分成两种 1. n==1 a*b 直接是一个两位数 求得十位和个位(这里十位和个位不可能相等) 然后如果等于d 则结果=1 2 ...

  4. [洛谷P3763] [TJOI2017]DNA

    洛谷题目链接:[TJOI2017]DNA 题目描述 加里敦大学的生物研究所,发现了决定人喜不喜欢吃藕的基因序列S,有这个序列的碱基序列就会表现出喜欢吃藕的性状,但是研究人员发现对碱基序列S,任意修改其 ...

  5. 基本控件文档-UIButton属性---iOS-Apple苹果官方文档翻译

    本系列所有开发文档翻译链接地址:iOS7开发-Apple苹果iPhone开发Xcode官方文档翻译PDF下载地址 //转载请注明出处--本文永久链接:http://www.cnblogs.com/Ch ...

  6. new操作符的内部运行解析

    在加上new操作符,我们就能完成传统面向对象的class + new的方式创建对象,在Javascript中,我们将这类方式成为Pseudoclassical. 基于上面的例子,我们执行如下代码   ...

  7. linux中断线程化分析【转】

    转自:http://blog.csdn.net/qq405180763/article/details/24120895 版权声明:本文为博主原创文章,未经博主允许不得转载. 最近在为3.8版本的Li ...

  8. device tree source file position

    android/kernel/msm-4.9/arch/arm64/boot/dts/qcom/

  9. 64_l3

    libguac-client-ssh-0.9.13-3.20170521git6d2cfda...> 23-May-2017 09:58 64570 libguac-client-ssh-0.9 ...

  10. 阿里云Centos等更新源设置成阿里源方法。

    https://help.aliyun.com/knowledge_detail/5974184.html ---------------------------------------------- ...