6.8 控制流语句(Control Flow Statement)

文章内容源自《GPU编程与CG语言之阳春白雪下里巴人》,因笔者读书易中途放弃,遂每读一章节,将其移至简书平台,以此作为对自己读书的勉励。笔者用粗体斜体 标注了关键词句,望感兴趣的读者们一起学习共勉。猛戳这里查看更多!

6.8 控制流语句(Control Flow Statement)

程序最小的独立单元是语句(statement),语句一般由分号结尾,缺省情况下,语句是顺序执行的,但是当涉及逻辑判断控制时,就要求有控制流程序语句。控制流程序语句分为条件语句循环语句,在C语言中,条件语句有if、if-else、switch等,而循环过程则由while、do-while和for语句支持。Cg中的控制流语句和循环语句与C语言类似:条件语句有:if、if-else;循环语句有:while、forbreak 语句可以和在for语句中使用。

Cg语言中的控制流语句要求其中的条件表达式返回值都是bool类型,这一点是与C语言不同之处(C语言中,条件表达式返回值可以是0、1)

vs_2_x, vp30 和 vp40 这些profile支持分支指令(又称转移指令,branch instruction) ,for和while循环指令在这些profile中被完全支持。在文献【3】中提到:

“In other profiles, for and while loops may only be used if the compiler can fully unroll them (that is, if the compiler can determine the iteration count at compile time)”。

这句话的意思是“在其他的profiles中,for和while循环只有当确切的知道循环次数时才能被使用 ”。但经过试验,如果使用“在 fp40 和 ps_3_0 之前的”片段 profiles编译含义 for, while 语句时会出现错误提示信息:

error c6003:instruction limit of exceeded……

因此,如果没有确切的把握,不要在低级的profiles中使用循环控制语句。同样,return只能作为后一条语句出现。函数的递归调用(recursion)在 Cg语言中是被禁止的。Switch 、case 和 default 在 Cg 中作为保留关键字存在,但是它们目前不被任何profile所支持。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Leetcode名企之路

【Leetcode】58. 最后一个单词的长度

这个题比较水,主要是注意一下前后有空格这种情况。 如下代码用preLong记录截止到当前字符最后一个单词的长度.

10920
来自专栏数据结构与算法

后缀数组详解

什么是后缀数组 后缀数组是处理字符串的有力工具 —罗穗骞 个人理解:后缀数组是让人蒙逼的有力工具! 就像上面那位大神所说的,后缀数组可以解决很多关于字符串...

36750
来自专栏非著名程序员

鸡蛋问题来了,是先有Class还是先有Object?

周末比较无聊,在浏览论坛的时候,偶然看到一个程序猿提问的问题,他时这样提问的:突然想到一个很菜的问题, 倒底先有Object还是先有Class?所有类都是Obj...

21260
来自专栏Fundebug

26个精选的JavaScript面试问题

为了保证可读性,本文采用意译而非直译。另外,本文版权归原作者所有,翻译仅用于学习。

13140
来自专栏编程

浅谈如何定义和调用Python的函数

函数是python编程核心内容之一,笔者在本文中主要介绍下函数的概念和基础函数相关知识点。函数是什么?有什么作用、定义函数的方法及如何调用函数。 函数是可以实现...

19050
来自专栏vue学习

函数声明提升与变量提升

1.当在函数的作用域里定义一个和外部变量一样的名称的变量时,变量声明会提升至第一句,但是赋值则不变

11120
来自专栏Android机动车

设计模式——工厂方法模式

工厂方法模式,又称工厂模式、多态工厂模式和虚拟构造器模式,通过定义工厂父类负责定义创建对象的公共接口,而子类则负责生成具体的对象。

8620
来自专栏pangguoming

全面理解面向对象的 JavaScript

前言 当今 JavaScript 大行其道,各种应用对其依赖日深。web 程序员已逐渐习惯使用各种优秀的 JavaScript 框架快速开发 Web 应用,从而...

400100
来自专栏余林丰

工厂模式——简单工厂模式

工厂模式分三类:简单工厂模式、工厂方法模式、抽象工厂模式。 首先介绍比较简单一种工厂模式——简单工厂模式。 我们以计算器作为一个例子来说明工厂模式到底是什么。作...

21960
来自专栏AzMark

Python字符串

18050

扫码关注云+社区

领取腾讯云代金券