首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C函数返回0,即使调试器显示它返回1

,可能是以下几个原因导致的:

  1. 代码逻辑错误:函数内部的代码逻辑可能存在错误,导致返回值与预期不符。需要仔细检查函数的实现,确保逻辑正确。
  2. 编译器优化:编译器可能对代码进行了优化,使得返回值被修改。可以尝试关闭编译器优化选项,重新编译并运行代码。
  3. 调试器显示错误:调试器可能存在显示错误的情况,导致返回值显示不正确。可以尝试使用其他调试器或调试工具进行验证。
  4. 函数调用错误:可能是函数调用的方式或参数传递不正确,导致返回值不符合预期。需要检查函数调用的方式和参数是否正确。
  5. 环境问题:可能是运行环境或操作系统的问题,导致返回值显示不正确。可以尝试在其他环境或操作系统中运行代码,查看返回值是否一致。

总结起来,要解决这个问题,需要仔细检查代码逻辑、关闭编译器优化、验证调试器显示、检查函数调用方式和参数、尝试在其他环境中运行代码。如果问题仍然存在,可能需要进一步调试和排查。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C语言函数返回 1返回 0 哪个好?

按照C语言语法, 0 表示假,非零(常常用 1)表示真,那是否函数也用 0 返回值表示“失败”,1 返回值表示“成功”呢?...02 行业“潜规则” C语言函数当然可以使用返回0 表示“失败”,用返回1 表示“成功”。...C语言也有“行业潜规则”,不过,对于一般的函数,大多数C语言程序员常常使用返回0 表示成功,非零值表示失败。...因此,如果希望我们定义的函数能够被大多数人愉快的使用,最好不要反其道而行,遵守“行业潜规则”更好一点。 仔细考虑下,其实C语言函数使用返回0 表示成功是有原因的。...-1 和 -2 都是“非零值”,而成功作为失败的对立面,也即“非零值”的对立面,myopen() 函数使用返回0 表示成功无可厚非。

2.5K20

C语言函数返回1返回0区别?

按照C语言语法, 0 表示假,非零(常常用 1)表示真,那是否函数也用 0 返回值表示“失败”,1 返回值表示“成功”呢?...“行业潜规则” C语言函数当然可以使用返回0 表示“失败”,用返回1 表示“成功”。...C语言也有“行业潜规则” 不过,对于一般的函数,大多数C语言程序员常常使用返回0 表示成功,非零值表示失败。...函数成功只有一种可能,函数失败却有多种可能 实数要么是 0,要么非 0,因此可以将 0 看作一个比较特殊的“唯一”数值,使用 0 这个“唯一”的返回值,表示唯一的“成功”,多种非零的返回值,表示多种原因的失败...-1 和 -2 都是“非零值”,而成功作为失败的对立面,也即“非零值”的对立面,myopen() 函数使用返回0 表示成功无可厚非。

5.2K2119

C语言函数执行成功时,返回1返回0,究竟哪个好?

按照C语言语法, 0 表示假,非零(常常用 1)表示真,那是否函数也用 0 返回值表示“失败”,1 返回值表示“成功”呢?...“行业潜规则” C语言函数当然可以使用返回0 表示“失败”,用返回1 表示“成功”。...C语言也有“行业潜规则” 不过,对于一般的函数,大多数C语言程序员常常使用返回0 表示成功,非零值表示失败。...函数成功只有一种可能,函数失败却有多种可能 实数要么是 0,要么非 0,因此可以将 0 看作一个比较特殊的“唯一”数值,使用 0 这个“唯一”的返回值,表示唯一的“成功”,多种非零的返回值,表示多种原因的失败...-1 和 -2 都是“非零值”,而成功作为失败的对立面,也即“非零值”的对立面,myopen() 函数使用返回0 表示成功无可厚非。

2.7K20

引脚数据提示编辑代码并继续调试(C#,VB,C ++)编辑XAML代码并继续调试调试难以重现的问题配置数据以显示调试器中更改执行流程跟踪范围外的对象(C#,Visual Basic)查看函数返回

即使重新启动后,变量仍保持固定状态。要固定数据提示,请将鼠标悬停在其上方时,单击“固定”图标。您可以固定多个变量。...配置数据以显示调试器中 对于C#,Visual Basic和C ++(仅C ++ / CLI代码),您可以使用DebuggerDisplay属性告诉调试器显示哪些信息。...查看函数返回值 要为您的功能,看看出现在该功能查看返回值的汽车窗口,而你是单步执行代码。要查看某个函数返回值,请确保您感兴趣的函数已经执行(如果您当前在函数调用中停止,请按一次F10键)。...另外,您可以在立即窗口中输入函数以查看返回值。(使用调试> Windows>立即打开。) 您还可以在“监视并立即”窗口中使用伪变量,例如。...更加熟悉调试器如何附加到您的应用程序(C#,C ++,Visual Basic,F#) 要附加到正在运行的应用程序,调试器将加载与要调试的应用程序完全相同的内部版本生成的符号(.pdb)文件。

4.5K41

在射击游戏中防止玩家作弊

上一条命令,地址 004012c8 处也执行了一条 call 指令,由于返回值会存放在 eax 中,因此我们可以推测,eax 的 00000000 是从这里来的 那么,这里调用的又是什么函数呢?...,因此 LoadLibraryW 函数会调用失败 到这里程序还没有崩溃,但后面的 GetProcAddress 函数也会调用失败 随后,失败的 GetProcAddress 函数返回了 00000000...最初级的一种反调试技术是 IsDebuggerPresent:一种能够检测是否挂载了调试器的 API 函数,通过返回值是否为 0 可以判断调试器的挂载状态 #include ..._ PBOOL pbDebuggerPresent ); 还有其他技术,如用 popf 和 SINGLE_STEP 异常来检测调试器的方法:当返回值为 0 时为正常,为 1 则表示挂载了调试器 __declspec...,否则显示 auth error 编译之后IDA看 可以看到逻辑非常清晰 但是UPX打包后,就看不懂了;即使用二进制编辑器打开可执行文件,我们也无法找到 correct!

69620

iOS开发 Xcode的各种调试、DEBUG

调试器允许你在程序运行的特定时暂停,你可以查看变量的值,执行自定的指令,并且按照你所认为合适的步骤来操作程序的进展。(这里有一个关于调试器如何工作的总体的解释。)...你以前有可能已经使用过调试器即使只是在 Xcode 的界面上加一些断点。但是通过一些小的技巧,你就可以做一些非常酷的事情。GDB to LLDB 参考是一个非常好的调试器可用命令的总览。...在 LLDB 中,你可以使用 process continue 命令来达到同样的效果,的别名为 continue,或者也可以缩写为 c。...如果你曾经不小心跳进一个函数,但实际上你想跳过,常见的反应是重复的运行 n 直到函数返回。其实这种情况,step out 按钮是你的救世主。...但是在函数的开头执行这个命令,是个非常好的隔离这个函数,伪造返回值的方式 。

2.1K50

Visual Studio 调试系列9 调试器提示和技巧

即使在重新启动后,固定的变量也能保持不动。 要固定数据提示,请在鼠标悬停其上时单击固定图标。 你可以固定多个变量。 ?...04 配置要在调试器显示的数据 有关C#,Visual Basic 和C++(C++仅 /CLI 代码),可以让调试程序要使用下列选项显示的信息DebuggerDisplay属性。...但是,如果变量超出了监视窗口的范围,你可能会注意到变成了灰色。在某些应用场景中,如果变量超出范围,变量的值甚至可能会发生变化,因此你可能需要密切关注(例如,变量可能会被当做垃圾回收掉)。...07 查看函数返回值 要查看函数返回值,请在逐步执行代码时,查看自动窗口中显示函数。 要查看函数返回值,请确保你关注的函数已执行完毕(如果函数的调用目前处于停止状态,请按一下 F10 键)。...此外,还可以在即时窗口中输入函数来查看返回值。 (通过调试 > 窗口 > 即时打开该窗口。) ? 此外,还可以在监视和即时窗口中使用伪变量,如 $ReturnValue。

3.1K10

C语言: 定义一个函数int isprime(int n),用来判别一个正整数n是否为素数,若为素数函数返回值为1,否则为0。在主函数中输入一个整数x,调用函数isprime(x)来判断这个整数x是

QQ:2835809579 有问题私聊我或者留言到评论区 原题: 定义一个函数int isprime(int n),用来判别一个正整数n是否为素数,若为素数函数返回值为1,否则为0。...在主函数中输入一个整数x,调用函数isprime(x)来判断这个整数x是不是素数,给出判断结果。...输入输出示例 第一次运行: 输入:12 输出:NO 第二次运行: 输入:37 输出:YES 代码: #include int isprime(int n) { int i; for (i=2; i<=n-1;...i++) { if (n %i==0) return 0;} return 1; } int main() { int x,y; printf("请输λ一个整数: "); scanf("%d",&x)...; y= isprime(x); if(y==0) printf( "NO\n"); else printf( "YES\n"); } 结果:(让我偷个懒直接截屏)

3.9K20

Xcode Debug 大全

调试器允许你在程序运行的特定时暂停,你可以查看变量的值,执行自定的指令,并且按照你所认为合适的步骤来操作程序的进展。(这里有一个关于调试器如何工作的总体的解释。)...你以前有可能已经使用过调试器即使只是在 Xcode 的界面上加一些断点。但是通过一些小的技巧,你就可以做一些非常酷的事情。GDB to LLDB 参考是一个非常好的调试器可用命令的总览。...如果你曾经不小心跳进一个函数,但实际上你想跳过,常见的反应是重复的运行 n 直到函数返回。其实这种情况,step out 按钮是你的救世主。...但是在函数的开头执行这个命令,是个非常好的隔离这个函数,伪造返回值的方式 。...006y8lVagw1f8ve5wnnr6j30li0c1wgd.jpg 运行后查看 006y8lVagw1f8vebiu6r5j30se0kdqcr.jpg 视图调试 启用视图调试:运行app过程中

1.1K20

第九课 如何在Remix环境下进行Solidity代码单步调试

使用调试器 ? Transation信息 调试器允许查看交易合约执行的详细信息。使用左侧的编辑器显示执行时源码的位置。 交易控制面板显示当前交易合约的基础信息。...注意:当该面板隐藏时,滑动条的运行粒度是一个course的,即使在多EVM环境构建,也只会在语法边界停止;当该面板显示时,才可能逐步进入到构建函数内部,即使对应相同的语句。...• Call Stack 调用堆栈 • Return Value 返回值,只有当运行到RETURN原语才显示 • Full Storages Changes 全存储改变,只有在执行末尾才显示所有改变的合约变化存储...需要说明的是,智能合约交易的执行是事件级别的,就是无法如C++一样在运行中改变变量值,只能一次执行完毕。调试器记录了执行的原语记录,所以可以前进和回滚。对于回滚,就像影片回滚放映一样,非常酷炫。..."0x14723a09acff6d2a60dcdf7aa4aff308fddc160c",500000000000000 合约交易执行成功后,点击终端输出器中的Debug按钮,点击调试面板的“Jump

3K30

Python 自动化指南(繁琐工作自动化)第二版:十一、调试

你的电脑只会做你让做的事情;它不会读取你的想法,做你想让做的事情。即使是专业的程序员也会一直制造 bug,所以如果你的程序有问题也不要气馁。...DEBUG - End of factorial(5) 0 2019-05-23 16:20:12,684 - DEBUG - End of program factorial()函数返回0作为5的阶乘...for循环应该将total中的值乘以从1到5的数字。但是logging.debug()显示的日志信息显示i变量开始于0而不是1。因为零乘以任何东西都是零,所以剩余的迭代对于total也具有错误的值。...但是,如果下一行代码是函数调用,则“单步执行”按钮将“单步执行”函数中的代码。函数的代码将以全速执行,函数调用一返回调试器就会暂停。...调用的random.randint(0, 1)➊将在一半时间返回0,在另一半时间返回1。这可以用来模拟 50/50 的硬币投掷,其中1代表正面。

1.4K40

FPGA 之 SOPC 系列(五)Nios II 软件使用与程序开发 I

二、编辑器和编译器 1、文本编辑器 成熟的全功能源文件编辑器,包括:语法高亮显示C/C++程序代码、全面的搜索工具、文件管理、在线帮助和教程、快速定位及自动纠错、内置调试等功能。...返回值:打不开则出错,返回一个空指针NULL 函数原型:int fclose (fp) 输入参数:fp的定义为:FILE *fp函数说明:关闭文件fp返回值:成功返回0,反之为-1(EOF) 函数原型...:文件型指针 函数说明:返回当前文件指针,得到当前位置 返回值:返回值为-1表示出错,反之为非0 函数原型:void clearerr(FILE *fp) 输入参数:fp:文件型指针 函数说明:复位错误标志...和中断有关的CPU寄存器有:ctl0、ctl1、ctl3、ctl4。Ctl0 是程序状态字,的bit0位是全局中断允许位,1代表允许,0代表禁止。...Ctl1是程序状字的堆栈,当发生中断时,由保留一个程序状态字的备份。Ctl3是中断允许寄存器,其中每一位控制着一个中断源,1代表允许,0代表禁止,共计32位。

84420

XCode调试器LLDB

NSNumber *n = @7; // 实际应该调用这个函数:Foo(); 或者短路一个逻辑检查? if (1 || theBooleanAtStake) { ... } 或者伪造一个函数实现?...你可以使用调试器。而且即使你已经知道如何使用调试器检查变量,它可以做的还有很多。 这篇文章将试图挑战你对调试的认知,并详细地解释一些你可能还不了解的基本原理,然后展示一系列有趣的例子。...现在就让我们开始与调试器共舞一曲华尔兹,看看最后能达到怎样的高度。 LLDB LLDB 是一个有着 REPL 的特性和 C++ ,Python 插件的开源调试器。...调试器允许你在程序运行的特定时暂停,你可以查看变量的值,执行自定的指令,并且按照你所认为合适的步骤来操作程序的进展。(这里有一个关于调试器如何工作的总体的解释。)...你以前有可能已经使用过调试器即使只是在 Xcode 的界面上加一些断点。但是通过一些小的技巧,你就可以做一些非常酷的事情。GDB to LLDB 参考是一个非常好的调试器可用命令的总览。

1.3K30

Visual Studio 在中断模式下检查和修改数据

调试器自动填充此窗口。 “自动” 窗口 用于显示在当前代码行和上一代码行中使用的变量。 对于C++程序,“自动”窗口还会显示函数返回值。 与“局部变量”窗口类似,“自动”窗口是由调试器自动填充的。...+000 g signed 浮点型或 signed 科学计数法,显示其中较短的数 (3./2.), g 1.5 c 单个字符 0x0065, c 101 'e' s 字符串 0x0012fde8, s...查看函数返回值 在多数情况下,如果某个函数返回值,我们会将函数返回值赋给某个临时变量。这样,我们就可以通过这个临时观察函数返回值。但是,有些时候我们不会这样做。...例如,像清单 6所示的代码一样,直接使用将另一个函数(fclose)的返回值作为当前函数(main)的返回值。在这种情况下,如果要查看函数返回值该怎么办呢?...这个值就是函数fclose的返回值。 如果使用Visual Studio调试清单 6所示的代码,那么可以使用“自动”窗口来显示函数返回值。

1.6K30

XCode调试器LLDB

NSNumber *n = @7; // 实际应该调用这个函数:Foo(); 或者短路一个逻辑检查? if (1 || theBooleanAtStake) { ... } 或者伪造一个函数实现?...你可以使用调试器。而且即使你已经知道如何使用调试器检查变量,它可以做的还有很多。 这篇文章将试图挑战你对调试的认知,并详细地解释一些你可能还不了解的基本原理,然后展示一系列有趣的例子。...现在就让我们开始与调试器共舞一曲华尔兹,看看最后能达到怎样的高度。 LLDB LLDB 是一个有着 REPL 的特性和 C++ ,Python 插件的开源调试器。...调试器允许你在程序运行的特定时暂停,你可以查看变量的值,执行自定的指令,并且按照你所认为合适的步骤来操作程序的进展。(这里有一个关于调试器如何工作的总体的解释。)...你以前有可能已经使用过调试器即使只是在 Xcode 的界面上加一些断点。但是通过一些小的技巧,你就可以做一些非常酷的事情。GDB to LLDB 参考是一个非常好的调试器可用命令的总览。

1.3K60

C#和.NET中的字符串

例如,即使操作符的两侧引用不同(指的是两个不同的字符串对象,它们都包含相同的字符序列),"hello".Substring(0,4)=="hell"也将返回true。...讽刺的是,这些问题通常是由调试器自身试图帮助解析字符串的行为引起的:将字符串显示为带有反斜杠转义字符的常规字符串字面值,或将其显示为带有@的完整字符串字面值。...这导致了许多问题,比如说怎么才可以删除@,尽管事实上@不是真的在那里——这只是调试器显示方式。...而且VS.NET的某些版本会在第一个空字符处停止显示字符串的内容,并且不能正确地评估其Length属性,只是计算值本身,而不是询问托管代码。再次重申,调试器会考虑字符串在第一个空字符处就结束。...("{0} U+{1:x4}", c, (int)c); } } } 内存使用情况 至少在当前的.NET实现中,字符串对象占用了20+(n/2)*4个字节(对n/2向下取整),

2.4K100

汇编和栈

一定要通过 source” 查看 StackWalkthrough 函数 (即使它是汇编)。通过源代码查看函数显示 AT&T 汇编 (因为它是用 AT&T ASM 编写的)。...观察已创建多少暂存空间: 看看一个变量指向的值…… 现在肯定不能保持 0x1 的值。为什么一个引用一个看似随机的值? 答案是由嵌入到寄存器应用程序的调试构建中的 DWARF 调试信息存储。...或者以十六进制表示,RBP-0x20。 这是重要的信息。 告诉调试器,始终可以在此内存地址中找到名为 one 的变量。 嗯,并非总是如此,但总是在该变量有效时(即它在范围内)。...调试器仍应在 executeLotsOfArguments 上停止。 确保您正在查看 “始终显示汇编” 输出并寻找汇编。...mph 记住,RDI 将包含传递给函数的第一个参数。 因此,为了使调试器能够看到应该为 1 的值,需要将 RDI 写入存储 1 的地址。 在这种情况下,RBP-0x20。

3.3K20

原 Data Access Compone

图中的调试器可能是vs,mdbg,windbg等等,调试器通过CLR调试器接口(dbi)来获取所需信息,来自目标的信息必须经过DAC,调试器实现了DBI,负责实现实现ReadVirtual函数读取目标内容...如果调试器需要显示托管应用程序中某个函数的堆栈起始地址,需假定调试器已经获取从DBI中获取了ICorDebugFunction接口的示例,这个示例首先调用了DBI API ICorDebugFunction...而非宿主机地址,m_pModule的值是个目标地址(DAC可以赋值DomainFile对象作为原始字节)的成员,这个成员的类型是PTY_MODULE,因此,如果函数返回,DAC会自动的封送Module...即使在non_dac的代码中也是如此。...这一点很重要, 原因有两个: 1. 如果我们以后从其他SUPPORTS_DAC函数调用它, 我们知道它是DAC安全的, 我们不需要担心DACizing。 2.

97060
领券