前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >6.8 控制流语句(Control Flow Statement)

6.8 控制流语句(Control Flow Statement)

作者头像
代码咖啡
发布2018-09-26 15:33:57
1.8K0
发布2018-09-26 15:33:57
举报
文章被收录于专栏:程序员叨叨叨

文章内容源自《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 语句时会出现错误提示信息:

代码语言:javascript
复制
error c6003:instruction limit of exceeded……

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.08.28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 6.8 控制流语句(Control Flow Statement)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档