switch 中 return和break的区别?解决办法
switch 中 return和break的区别?
//下面代码中把switch中 的return语句换成break语句有什么区别吗?我搞不懂他们之间的区别了,希望能解析下
------解决方案--------------------
break 跳出最近一层的嵌套
return 函数返回(如果有的话有返回值的返回结果)。
------解决方案--------------------
return函数就直接返回了。break只是跳到switch的外面,继续执行后面的代码。
这里,break还会再执行return DefWindowProc(hwnd, message, wParam, lParam);
这句,而return 的话,就不执行了。
------解决方案--------------------
return函数就直接返回了。break只是跳到switch的外面,继续执行后面的代码。
这里,break还会再执行return DefWindowProc(hwnd, message, wParam, lParam);
这句,而return 的话,就不执行了。
//下面代码中把switch中 的return语句换成break语句有什么区别吗?我搞不懂他们之间的区别了,希望能解析下
- C/C++ code
#include<windows.h> #include"resource.h" LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) { static TCHAR szAppName[] = TEXT("lige"); HWND hwnd; MSG msg; WNDCLASS wndclass; wndclass.cbClsExtra = 0; wndclass.cbWndExtra = 0; wndclass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH); wndclass.hCursor = LoadCursor(NULL,IDC_ARROW); wndclass.hIcon = LoadIcon(hInstance,MAKEINTRESOURCE(IDI_ICON1)); wndclass.hInstance = hInstance; wndclass.lpfnWndProc = WndProc; wndclass.lpszClassName = szAppName; wndclass.lpszMenuName = MAKEINTRESOURCE(IDR_MENU1); wndclass.style = CS_HREDRAW | CS_VREDRAW; if (!RegisterClass(&wndclass)) { MessageBox(NULL,TEXT("注册窗口类失败!"),TEXT("失败"),MB_OK | MB_ICONERROR); return 0; } hwnd = CreateWindow( szAppName, TEXT("测试程序"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL ); ShowWindow(hwnd,SW_SHOWNORMAL); UpdateWindow(hwnd); while (GetMessage(&msg,NULL,0,0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; } LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; switch (message) { case WM_CREATE: return 0; case WM_COMMAND: switch (LOWORD(wParam)) { case IDM_OPEN: return 0; case IDM_CLOSE: SendMessage(hwnd,WM_CLOSE,0,0); return 0; } case WM_PAINT: hdc = BeginPaint(hwnd,&ps); EndPaint(hwnd,&ps); return 0; case WM_CLOSE: if (IDYES == MessageBox(NULL,TEXT("是否要退出?"),TEXT("退出"),MB_YESNO)) { DestroyWindow(hwnd); } return 0; case WM_DESTROY: PostQuitMessage(0); return 0; } return DefWindowProc(hwnd, message, wParam, lParam); }
------解决方案--------------------
break 跳出最近一层的嵌套
return 函数返回(如果有的话有返回值的返回结果)。
------解决方案--------------------
return函数就直接返回了。break只是跳到switch的外面,继续执行后面的代码。
这里,break还会再执行return DefWindowProc(hwnd, message, wParam, lParam);
这句,而return 的话,就不执行了。
------解决方案--------------------
return函数就直接返回了。break只是跳到switch的外面,继续执行后面的代码。
这里,break还会再执行return DefWindowProc(hwnd, message, wParam, lParam);
这句,而return 的话,就不执行了。