默认计划
491人加入学习
(0人评价)
【研发工程师】C语言程序设计
价格 ¥ 970.00
该课程属于 名企研发核心能力课 请加入后再学习

回文整数:

CPU分支预测:

// likely表示x经常成立
#define likely(x)      __builtin_expect(!!(x), 1)
// unlikely表示x不经常成立
#define unlikely(x)    __builtin_expect(!!(x), 0)

串行:5 x 5

并行:5 + 4,取指令的只取指令,各司其职。

 

CPU最讨厌分支结构,CPU并行的,需要预先加载,如果预先加载的没执行,则大大降低CPU运行效率。

if没执行时,CPU就要已经预先加载后面的指令。

---------------------------------------------

循环结构:

while (表达式) {  // 当....型循环,至少执行0次

    代码块;

} 

do {    // 至少执行1次,先做,再判断。

    代码块

} while ( 表达式);  // 注意分号

for (初始化; 循环条件; 执行后操作) { // 当....型循环,至少执行0次
    代码块:
}

 

 for (   ;   ;   ) 里面可以省略一个或多个,在其他位置写

 

continue; 中止本次循环,继续下次循环。

break;  结束循环。

 

C语言没有左值,右值概念。

 

假 && 这里就不执行了,短路原则

真 || 后面就不执行了。

 

// 10.struct_program.c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {
    int a = 0, b = 0;
    if ((a++) && (b++)) {               // 先a值判断后 再++

        printf("true\n");
    } else {

        printf("false\n");
    }
    printf("a = %d, b = %d\n", a, b);    // a = 1, b = 0 逻辑与短路原则

    srand(time(0));    // 生成随机种子
    int n, count = 0;
    scanf("%d", &n);
    for (int i = 0; i < n; i++) {
        int val = rand() % 100;
        count += (val & 1);
        i && printf(" ");
        printf("%d", val);
    }
    printf("\n");
    printf("count: %d\n", count);

    return 0;
}

 

输出格式:

for (int i = 0; i < 5; i++) {
    i &&  printf(" ");
    i == 0 || printf(" ");
    printf("%d", i);
}
printf("\n");

 

stdlib.h

随机整数 rand()--> 伪随机,计算机没有真正的随机过程。

srand(time(0)); // 生成随机种子(当前系统的时间戳,单位:秒)

time.h

time(0)获取动态时间

[展开全文]

附录1、回文整数:

F、D1、D2、EX、WB(CPU执行一个指令)

CPU分支预测节省if判断时间

     节省分支结构

二、循环结构

  while语

  for 语句, for(初始化;循环条件;执行后操作) {代码块;}

  continue; break;

   srand(time(0));

   int val =  rand() % 100;

   cnt += (val & 1);

   i && printf(" "); printf("%d", val);

[展开全文]

授课教师

C++算法工程师

课程特色

视频(31)