无法执行内部函数 strlen
Can't execute inner function strlen
我的任务是使用函数查找 C 样式字符串的长度。我确实解决了这个问题,但是当我通过调试器传递代码时,我发现了一些奇怪的东西。当函数完成它的工作并返回我一个数字时,在去 cout <<"***" <<endl 的那一刻;在屏幕上打印文本之前,它被发送到功能并且功能再次工作,但使用必须在屏幕上打印的文本。只有在此之后,它才会打印在屏幕上。它是如何工作的?
#include "pch.h"
#include <iostream>
using namespace std;
unsigned strlen(const char *str)
{
unsigned x = 0;
while (str[x] != 0) x++;
return x;
}
int main()
{
// Test 1
const char* str1 = "How do you do";
if (strlen(str1) == 13)
cout << "Test 1 passed" << endl;
else cout << "Test 1 failed" << endl;
// Test 2
const char* str2 = "";
if (strlen(str2) == 0)
std::cout << "Test 2 passed" << std::endl;
else std::cout << "Test 2 failed" << std::endl;
// Test 3
const char* str3 = "This is stepik.org";
if (strlen(str3) == 18)
std::cout << "Test 3 passed" << std::endl;
else std::cout << "Test 3 failed" << std::endl;
const char* str4 = "Russian Federation";
if (strlen(str4) == 18)
std::cout << "Test 4 passed" << std::endl;
else std::cout << "Test 4 failed" << std::endl;
const char* str5 = "Russia";
if (strlen(str5) == 6)
std::cout << "Test 5 passed" << std::endl;
else std::cout << "Test 5 failed" << std::endl;
}
你做了一件坏事- 你使用了标准库(strlen
(中的名字作为你自己函数的名称。实际上,你已经覆盖了它,并为所有的麻烦敞开心扉。此程序格式不正确。
实际上,cout
以char*
作为参数将确定字符串的长度,调用strlen
,这恰好是您的函数。
相关文章:
- C++ SSE 内部函数:将结果存储在变量中
- C++代码停止工作错误使用cout内部函数
- 为什么从具有较大阵列的 SIMD 内部函数中获得的相对加速比标量更大?
- 使用英特尔内部函数 (AVX) 中的混合说明
- 英特尔汇编与内部函数,AVX
- 使用SSE内部函数复制少量数据时出现问题
- 在为函数编写单元测试时,我应该模拟所做的内部函数调用吗?
- 用于平铺矩阵乘法的 AVX 内部函数
- 是否可以使用类的析构函数内部函数来重置值?
- 我在理解 AVX 随机内部函数如何为 8 位时遇到一些问题
- 无法执行内部函数 strlen
- COUT 内部函数调用的顺序
- GCC(通过 CUDA)内部函数的编译器错误,但我没有使用任何
- C++ ld 链接器 --wrap 选项不适用于内部函数调用
- 通过Visual Studio将小型结构逐值传递到非内部函数的速度很慢
- 使用内部函数递增数组的特定元素
- 在使用英特尔内部函数对 SIMD 代码进行编程时,如何强制使用 vmovapd 而不是 vmovupd?
- 如何最大限度地减少使用标量 SIMD 内部函数的 SIMD 注册表的双重负载开销
- 有符号整数溢出、内部函数和未定义的行为
- SSE2 内部函数 - 找到两个无符号短向量的最大值