标签: compiler-construction

如何编译if语句编译

main()    
{

   int k = 5;

    if(++k <5 && k++/5 || ++k<=8);  // how to compiler compile this statement 
  print f("%d",k);
}
Run Code Online (Sandbox Code Playgroud)

//这里的答案是7但是为什么?

c c++ compiler-construction

-5
推荐指数
1
解决办法
205
查看次数

C++代码必需的括号

我读了一段写成的代码

for (kf=0; kf<nf; kf++)
    if (EPS_MOCK[kf] == 1)
        for (i=0; i<nptsx; i++)
            for (j=0; j<nptsz; j++)
            {
                x0[iv] = log(inv_Controls->epsilonBed.GetElem(j,i,kf));
                iv = iv+1;
            }
for (kf=0; kf<nf; kf++)
    if (inv_num_packman[kf] == -1)
        for (i=0; i<nzx; i++)
        {
            x0[iv] = log(inv_Controls->num_packman[i+kf*nzx]);
            iv = iv+1;
        }
    else if (inv_num_packman[kf] == 1)
    {
        x0[iv] = log(inv_Controls->num_packman[kf*nzx]);
        iv = iv+1;
    }
Run Code Online (Sandbox Code Playgroud)

而预期的括号设置将是

for (kf=0; kf<nf; kf++){
    if (EPS_MOCK[kf] == 1){
        for (i=0; i<nptsx; i++){
            for (j=0; j<nptsz; j++)
            {
                x0[iv] = log(inv_Controls->epsilonBed.GetElem(j,i,kf));
                iv …
Run Code Online (Sandbox Code Playgroud)

c++ compiler-construction algorithm object parentheses

-5
推荐指数
2
解决办法
119
查看次数

构建编译器步骤

我一直在考虑建立自己的编译器一段时间,几天前我终于开始了它.我的编译器工作方式如下:

  • 解析我自己的文件中的代码.(使用c ++编写的.exe文件)
  • 创建汇编代码
  • 创建包含这些汇编代码的文件
  • 编译该汇编文件(如果已生成)(使用vbs脚本完成)
  • 链接.obj文件
  • 我们有.exe文件

现在我在找到解析代码的最佳方法时遇到了困难.我还没有真正做到这一点,但我会把我的想法放在这里.

  • 找到所有变量并声明它们.变量前面会加一个'var'(现在).未初始化的变量将被放入.data中?.data部分中的section和initialized.
  • 找到主程序并开始执行功能和操作.

现在我只是想知道是否有人可以改进我的想法.或者,如果某人有更好的想法来制作某种编译器和您自己的编程语言.

c++ compiler-construction assembly

-6
推荐指数
1
解决办法
165
查看次数

如何在GCC中维护递归调用堆栈?

GCC如何确保堆栈不会溢出?它不应该检查Size是否小于它可以保留的MAX并相应地提示用户,尤其是当它被隐式定义时?这不是一个很棒的编程范例吗?

c compiler-construction gcc

-8
推荐指数
1
解决办法
150
查看次数

这将是什么输出?请也解释一下

#include<stdio.h>
int main(){
int a;
printf("%u\n ",&a); 
printf("%p\n ",a); 
printf("%p\n ",&a); 
printf("%fp\n ",&a); 
return 0;
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试过此代码,但无法理解输出

4193177020
 (nil)
 0x7ffff9eecdbc
 0.000000p
Run Code Online (Sandbox Code Playgroud)

这是什么存储空间地址,哪一部分是偏移量?

c compiler-construction memory-management offset memory-segmentation

-12
推荐指数
1
解决办法
104
查看次数